封装
将类的某些信息隐藏在类内部,不允许外部程序直接访问,通过该类提供的方法实现对隐藏信息的操作和访问或者公共权限构造方法赋值
封装的好处:
隐藏类的实现细节
方便加入控制语句
方便修改实现
只能通过规定方法访问
具体表现:
属性使用private修饰
方法使用public修饰
public class Demo1 {
private String name;
private int age;
public void setName(String n){
name = n;
}
public void setAge(int a){
age = a;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
}
public class Test {
public static void main(String []args){
Demo1 d = new Demo1();
d.setName("张三");
d.setAge(18);
}
继承
从已有的类中派生出新的类,新的类能吸收已有类的属性和行为,并扩展新的能力
继承是实现代码可重用的根基
继承是提高代码可扩展性的主要途径
Java中使用extends关键字来表示继承关系
Java不支持多继承,一个类只能有一个直接父类即单继承
只能继承非私有属性和非私有方法
符合什么是什么关系的设计时,使用继承
eg:猫是动物,狗也是动物
有共性
将子类的共有属性和行为放到父类中
继承是代码重用的一种方式
继承形式
[访问权限修饰符][修饰符] 子类名 extends 父类名 {子类体}
专业术语:
eg:Dog是Animal类的子类,Animal类是Dog类的父类
Dog是Animal类的派生类,Animal类是Dog类的基类
继承的传递性:
C类从B类继承,B类又从A类继承
C类就会具有B类和A类的非私有属性和非私有方法
object是所有类的基类
当一个类没有继承任何一个类时,JVM会让其默认的继承Object类
继承中的构造方法
子类构造方法总是先调用弗雷德构造方法,默认情况下,调用父类无参构造方法
可以在子类构造方法的第一行,使用super关键字调用父类任意一个构造方法
如果用super,必须写在构造方法的第一句
如果子类的构造方法没有显示的调用基类构造方法,则系统默认调用基类无参构造方法
类的加载:
如果一个类有父类,会先加载父类
super关键字
代表父类的引用,子类构造方法调用父类构造方法
用"super.方法名"调用父类方法
用"super.成员变量"引用父类成员变量
this关键字
this关键字代表自身类的对象,表示当前正在访问的对象
使用this关键字引用成员变量
使用this关键字调用成员方法
this关键字必须放在非静态方法里
方法的重写(OverRide)
注:重载是(Overload)
在子类中可以根据需要对从基类中继承来的方法进行重写
当父类的方法实现不能满足子类的需求时,可以将父类中定义好的功能方法重写过来
方法重写规则
方法名相同,参数列表相同
返回值类型相同
与父类方法的结构相同
java注解:
是java中事先定义好的一些注解标签,作用在类、属性、方法上,用于标记运行时、编译时进行解析检测
@Override:标注此方法是从父类重写而来的
类之间的关系——关联、依赖
关联关系:
对象和对象之间的连接,在Java中表现形式为一个类作为另一个类的属性类型存在,即"有"的关系
eg:人有手机
关联关系分为单向关联和双向关联
单向关联:A类关联B类
双向关联:A类关联B类,B类关联A类
关联关系的多重性:
一对一关联 eg:一个学生只能在一个班级里学习
一对多关联 eg:一个学生可以参与多个班级的学习
解决一对多关联的方案:
集合 数组
依赖关系:(use-a)
指一个类使用到了另一个类B
依赖关系的特性:
这种关系是偶然的,是微弱的,但B类的变化会影响到这个类
具体表现:
在代码层面表现为类B作为参数在类A的方法中使用
关联关系和依赖关系的比较:
关联是"has"关系,依赖是"use"关系
A类关联B类,是指B类作为A类的属性存在
A类依赖B类,是指B类作为A类的方法参数存在
多态
同一种事物·,在不同时刻表现不同的状态
多态存在的三个必要条件:
要有继承(包括接口的实现)(前提条件)
要有重写(前提条件)
父类引用指向子类对象
当编译期类型是父类,运行期类型是子类时,被称为父类引用指向子类对象
eg:Animal父类 Cat子类
Animal x = new Cat()
Animal的引用指向Cat对象
多态环境下对成员方法的调用:
编译看左边,运行看右边
多态环境下对静态方法的调用:
编译和运行都看左边
多态环境下对成员变量的调用:
编译和运行都看左边