1,封装
* A.类与对象
* 类,用于描述多个对象的共同特征,它是对象的模板。
* 对象,用于描述现实中的个体,它是类的实例。
* 类的定义:使用关键字class来定义java中的类
* 格式:
* class 类名 {
* //属性
* 数据类型 变量名;
* …
* //方法
* 修饰符 返回值类型 方法名(参数){ }
* …
* }
*
* B.创建对象:
* 格式:
* 类名 对象名 = new 类名();
* C.封装(private关键字)
* 封装,把对象的属性与方法的实现细节隐藏,仅对外提供一些公共的访问方式
* 封装的体现:
* 变量:使用 private 修饰,这就是变量的封装
* 方法:也是一种封装,封装了多条代码
* 类: 也是一种封装,封装了多个方法
* D.private关键字,私有的意思
* 它可以用来修饰类中的成员(成员变量,成员方法)
* private的特点:
* private修饰的成员只能在当前类中访问,其他类中无法直接访问
* E.this关键字
* this关键字,本类对象的引用
* this是在方法中使用的,哪个对象调用了该方法,那么,this就代表调用该方法的对象引用
* this什么时候存在的?当创建对象的时候,this存在的
* this的作用:用来区别同名的成员变量与局部变量(this.成员变量)
* public void setName(String name) {
* this.name = name;
* }
###02对象的内存图
对象的内存图.JPG
###04this内存图
* A.this内存图
继承
[if !supportLists]l [endif]继承:是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有
[if !supportLists]l [endif]继承的好处:可继承的属性和方法。
[if !supportLists]l [endif]
提高了代表的可维护性
提高了代码的复用性
让类与类之间产生了继承关系
[if !supportLists]l [endif]继承的弊端:
类与类之间的耦合度过高
[if !supportLists]l [endif]继承特点:
java中类只能够单继承,不能多继承,可以多层继承
class Yy extends Object {}
class Fu extends Yy{}
class Zi extends Fu {}
所有的类都直接或者间接的继承了Object类,Object类称为祖宗类
[if !supportLists]l [endif]继承的注意事项:
1,使用关键字 extends 让类与类之间 产生继承关系
2,父类私有的成员,子类不能继承,因为根本看不到
3,不能为了继承某个功能而随意进行继承操作, 必须要符合 is a 的关系
苹果is a水果
男人is a人
狗is a人 , 这种情况就不能继承了
[if !supportLists]l [endif]继承中的成员变量关系:
不同名的变量:
子类直接继承使用
同名的变量:
默认访问的是子类自己的成员变量,想访问父类中的同名变量,请使用 super.成员变量;
[if !supportLists]l [endif]继承中的成员方法关系:
不同名的方法:
子类直接继承使用
同名的方法:
默认访问的是子类自己的成员方法,想访问父类中的同名方法,请使用super.成员方法();
[if !supportLists]l [endif]super:用来表示当前对象中包含的父类对象空间的引用
调用父类的成员变量:
super.成员变量;
调用方法的成员方法:
super.成员方法();
[if !supportLists]l [endif]方法重写(override):指 在子父类中,出现了方法声明相同的情况,也叫做方法覆盖,方法复写
[if !supportLists]l [endif]方法重写的注意事项:
[if !supportLists]1, [endif]子类的方法声明要与父类相同
2, 子类要重写方法的方法,方法的权限修饰符不能比父类的更低
[if !supportLists]l [endif]3, 父类私有的方法,子类不能够进行方法重写
[if !supportLists]l [endif]方法重载(overload):指 在同一个类中,多个方法名称相同,它们的参数列表不同(个数不同,数据类型不同)
[if !supportLists]l [endif]抽象
[if !supportLists]l [endif]抽象方法:方法只有声明部分,没有方法体
[if !supportLists]l [endif]抽象类:包含抽象方法的类,一定是抽象类
使用abstract 修饰的类,是抽象类
[if !supportLists]l [endif]抽象类的特点:
1,抽象类与抽象方法都必须使用 abstract来修饰
2,抽象类不能直接创建对象
3,抽象类中可以有抽象方法,也可以没有抽象方法
4,抽象类的子类
a,实现了抽象方法的具体类
b,抽象类
多态 接口
[if !supportLists]l [endif]接口:理解为是一个特殊的抽象类,但它不是类,是一个接口
[if !supportLists]l [endif]接口的特点:
1,定义一个接口用interface关键字
interface Inter{}
2,一个类实现一个接口,实现implements关键字
class Demo implements Inter{}
3, 接口不能直接创建对象
通过多态的方式,由子类来创建对象,接口多态
[if !supportLists]l [endif]接口中的成员特点:
成员变量:
只能是final 修饰的常量
默认修饰符:public static final
构造方法:
无
成员方法:
只能是抽象方法
默认修饰符: public abstract
[if !supportLists]l [endif]类与类,类与接口,接口与接口之间的关系
类与类之间:继承关系,单继承,可以是多层继承
类与接口之间: 实现关系,单实现,也可以多实现
接口与接口之间:继承关系,单继承,也可以是多继承
Java中的类可以继承一个父类的同时,实现多个接口
[if !supportLists]l [endif]多态:理解为同一种物质的多种形态
[if !supportLists]l [endif]多态使用的前提:
1,有继承或者实现关系
2,要方法重写
3,父类引用指向子类对象
[if !supportLists]l [endif]多态的成员访问特点:
方法的运行看右边,其他都看左边
[if !supportLists]l [endif]多态的好处:
提高了程序的扩展性
[if !supportLists]l [endif]多态的弊端:
不能访问子类的特有功能
[if !supportLists]l [endif]多态的分类
[if !supportLists]l [endif]类的多态
abstract class Fu {
public abstract void method();
}
class Zi extends Fu {
public void method(){
System.out.println(“重写父类抽象方法”);
}
}
//类的多态使用
Fu fu= new Zi();
[if !supportLists]l [endif]接口的多态
interface Fu {
public abstract void method();
}
class Zi implements Fu {
public void method(){
System.out.println(“重写接口抽象方法”);
}
}
网友评论