2.java三大特性
1. 封装
方法:将属性值修饰为私有,提供get和set方法。造成所有对对象的访问都是通过方法的调用来完成(配合this的使用)
结果:用户不能直接随意改变一个对象内的属性,必须通过调用方法(验证)来访问和修改
2. 面向对象三大特性:继承
关键字 extents
修饰符|使用范围 |继承与否
---|--:|---
Public| 公开使用 |可以继承|
Protected|在本类、同包其它类和子类、其它包的子类|可以继承
(default)|在本类、同包其它类|包的子类中可以 承
Private|在本类内部使用|不能被继承(实际被继承,无权访问)
注意:构造方法不
能被继承
继承的对象创建过程:
C extends B
B extends A
创建C 对象: //不考虑静态代码块,若有静态代码块,先通过递归的由基类到派生类加载代码块分配空间
初始化A的属性
调用A的构造方法
初始化B的属性
调用B的构造方法(默认调用A的构造,super())
初始化C的属性
调用C的构造方法(默认调用B的构造,super())
方法覆盖:
定义:子类用自己的方法实现替换掉能继承自父类的方法实现
要求:方法名相同、参数表相同、返回值类型相同、(访问修饰符相同或范围更广)
this关键字的使用
- 本身是引用,代表当前对象。在类中访问自己的属性和方法时,如果不加this,则自动默认this调用,当在局部方法内出现与类属性同名的局部变量时,如 加this表示类的成员变量,不加则代表是局部变量。
- 调用本类的无参构造方法
- this(…),调用本类中其他相应参数表的构造方法
注意:在使用this时,必须将this关键字放在构造方法内的第一行
Super关键字:
是个引用,指向父类的对象,用例调用父类的方法,super.父类方法( ),super须在方法内使用
可以用在构造方法内,指明调用父类的构造方法,用法和this相同。但必须放在构造函数的第一行,
例子:
class A {
public A(int i){}
}
class B extends A{
}
程序出错,系统默认为
class A {
public A(int i){}
}
class B extends A{
public B(){
super();
}
}
3. 面向对象三大特性:多态
没有继承就没有多态
Java实行的单继承
多态的开闭原则:(继承和多态)对修改关闭,对扩展开放
利用多态,可以使代码针对父亲展开编程,使代码更通用
多态的两种常见的应用场景:
把多态应用在方法的参数上:
m (A a) :方法可以接受A类,也可以接受A的子类对象
把多态应用在方法的返回值类型上:
A m() :方法返回的可以是A类或A类的某个子类对象
例子:父类对象引用子类对象,以方便扩展新的子类而不需改变方法代码:
例子1:
public class test {
public static void main(String[] args) {
Animal dog = new Dog();
Animal cat = new Cat();
eats(dog);
eats(cat);
}
static void eats(Animal animal){
animal.eat();
}
}
class Animal {
public void eat(){
System.out.println("吃的方法");
}
}
class Dog extends Animal {
public void eat(){
System.out.println("狗吃骨头");
}
}
class Cat extends Animal{
public void eat(){
System.out.println("猫吃小鱼");
}
}
例子2
public class ExcEmployee{
public static void main(String[] args){
Employee[] es = new Employee[4];
es[0] = new ProductEmployee("Yangdd",31);
es[1] = new SalesEmployee("Wucj",36);
es[2] = new ManageEmployee("Xusy",29);
es[3] = new CeoEmployee("Huxz" , 16);
for(int i = 0 ; i <es.length ; i++){
es[i].work();
}
double result = 0 ;
int count = 0;
for(int i = 0 ; i < es.length ; i++){
if (es[i] instanceof ManageEmployee){
count++;
result+=es[i].getAge();
}
}
System.out.println(result/count); //平均年龄
}
}
class Employee{
private String name;
private int age;
public Employee(){}
public Employee(String name){this.name = name;}
public Employee(String name , int age){ this(name);this.age = age;}
public int getAge(){ return age;}
public void setAge(int age){this.age=age;}
public void work(){ }
}
class ProductEmployee extends Employee{
public ProductEmployee(String name , int age){super(name,age);}
public void work(){ System.out.println("在车间劳动");}
}
class SalesEmployee extends Employee{
public SalesEmployee(String name , int age){super(name,age);}
public void work(){ System.out.println("出差跑客户");}
}
class ManageEmployee extends Employee{
public ManageEmployee(String name , int age){super(name,age);}
public void work(){ System.out.println("在办公室斗地主");}
}
class CeoEmployee extends ManageEmployee{
public CeoEmployee(String name , int age){ super(name,age);}
public void work(){ System.out.println("在会议室开会");}
}
2.java三大特性的更多相关文章
- Java 三大特性——封装、继承、多态
一.封装 封装,实际就是把属于同一类事物的共性(包括属性与方法)归到一个类中,以方便使用. 概念:在面向对象程式设计方法中,封装(英语:Encapsulation)是指,一种将抽象性函式接口的实作细节 ...
- JAVA三大特性之多态
面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消息做出响应.即同一消息可以根据 ...
- JAVA三大特性之一——封装
自学java已经有一段时间了,但是感觉对于很多知识点还是有必要总结和整理一下,下面我就来说一下我对JAVA三大特性之一——封装特性的认识和理解. 封装,从字面意思可以看出来,就是包装,也就是把我们写好 ...
- JAVA基础第二章-java三大特性:封装、继承、多态
业内经常说的一句话是不要重复造轮子,但是有时候,只有自己造一个轮子了,才会深刻明白什么样的轮子适合山路,什么样的轮子适合平地! 我将会持续更新java基础知识,欢迎关注. 往期章节: JAVA基础第一 ...
- Java三大特性
Java 三大特性,算是Java独特的表现,提到Java 的三大特性, 我们都会想到封装, 继承和多态 这是我们Java 最重要的特性. 封装(Encapsulation) : 封装:是指隐藏对象的属 ...
- java三大特性:封装、继承、多态
Java三大特性之封装 一.定义 封装性指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部的信息,而是通过该类所提供的方法来实现对内部信息的操作和访问. 二.使用封装的好处: 1 ...
- 浅谈Java三大特性
Java三大特性想必大家都不陌生:封装.继承以及多态.很多刚接触Java的小伙伴都会想,它们到底有什么了不得之处,又赋予Java这门编程语言什么魔力呢?今天我们来探讨一下吧~~ 首先,名词解释: 封装 ...
- 浅析Java三大特性封装、继承、多态,及作业分析
前言 本次博客衔接上次博客,作为这一阶段Java学习的分析.上一篇博客着重介绍了Java的OO编程思维,面向对象与面向过程的区别.本篇博客重心在Java的三大技术特性,附带作业分析. Java三大特性 ...
- JAVA三大特性之三——多态
作为JAVA的三大特性之一,多态性是很多人都没有弄清楚的一个重要特性,今天我就来从我所理解的角度来说一下. 首先,从他的字面意思来理解,多态,从其字面来理解就是多种形态,多种表现形式.根据这些,我最能 ...
- Java 三大特性
一.Java第一大特性:封装 封装:将属性私有化,提供共有方法访问私有属性,实现细节隐藏,并且程序也更加容易维护. class Dish { private final String name; ...
随机推荐
- 2019-9-28:渗透测试,基础学习,pgp常量,逻辑运算,DNS投毒,笔记
sunny.exe clientid 隧道ID route -n 查看网关netstat -rn 查看网关 DNS劫持ettercap用来内网渗透测试使用,可以嗅探内网,DNS劫持等攻击1,在攻击者电 ...
- 图解 Spring:HTTP 请求的处理流程与机制【5】
5. HTTP 请求处理相关配置文件说明 HTTP 请求穿越的整个空间是分层的,包括:Web 容器.Web 应用.Spring 框架等,它们每层都是通过配置文件配置初始化的,这是一种松耦合的架构设计. ...
- OC中内存管理(转)
OC内存管理 一.基本原理 (一)为什么要进行内存管理. 由于移动设备的内存极其有限,所以每个APP所占的内存也是有限制的,当app所占用的内存较多时,系统就会发出内存警告,这时需要回收一些不需要再继 ...
- php方法注释
注释格式 <?php /** * @method 发送邮件 * @url email/send?token=xxx * @http POST * @param token string [必填] ...
- phpStorm自动生成___jb_tmp___文件
把这个去掉就可以了
- JAVA学习第一课-手工笔记
JVM:JAVA虚拟机,JAVA核心,跨平台,作用是翻译. JRE:运行环境,包含JVM和运行的核心类库. JDK:全新开发使用,包含JRE,编译工具: 核心是JVM 以下是关系库 安装路径不要有空格 ...
- FF.PyAdmin 接口服务/后台管理微框架 (Flask+LayUI)
源码(有兴趣的朋友请Star一下) github: https://github.com/fufuok/FF.PyAdmin gitee: https://gitee.com/fufuok/FF.Py ...
- 【原创】003 | 搭上基于SpringBoot事务思想实战专车
前言 如果这是你第二次看到师长,说明你在觊觎我的美色! 点赞+关注再看,养成习惯 没别的意思,就是需要你的窥屏^_^ 专车介绍 该趟专车是开往基于Spring Boot事务思想实战的专车,在上一篇 搭 ...
- JavaScript基础3
While循环 在指定条件为真时循环执行代码块.先确定条件再执行代码 语法 while(条件) { 需要执行的代码 } 条件中所用变量如果没有值,循环就不会停下,会导致浏览器崩溃: do...whil ...
- Spring Boot 搭建TCP Server
本示例首选介绍Java原生API实现BIO通信,然后进阶实现NIO通信,最后利用Netty实现NIO通信及Netty主要模块组件介绍. Netty 是一个异步事件驱动的网络应用程序框架,用于快速开发可 ...