封装: ctrl+h打开类树
该漏的漏,该藏得藏;
程序设计要求,高内聚,低耦合!
高内聚:就是:类的内部数据操作细节自己完成,不允许外部干涉。
低耦合:仅暴漏少量的方法给外部使用;
数据的隐藏:
通常,应该禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。
属性私有:get/set
作用:
1提高程序的安全性,保护数据
2隐藏代码的实现细节
3统一接口
4系统可维护性增加了;
继承:
继承的本质是对某些类的抽象,从而实现对世界更好的建模
extands的意思是扩展,子类是父类的扩展;
java只有单继承,
继承是类和类之间的关系;
obect类,所有类打的父类,jav中的类,都直接或者间接继承Object类
super,父
方法重写:
子类继承了父类就会拥有父类全部的方法,如果添加私有属性,则不能拥有;
多态:
—所有抽象方法都是多态的!
一个对象的实际类型是确定的
new student();
new person();
//可以指向的引用类型就不确定了,父类的引用指向子类
Person s1= new student();
子类重写了父类的方法,执行子类的方法;
多态注意的事项:
多态是方法的多态,属性没有
父类和子类没有联系,类型转换异常:ClassCastException
存在条件:继承关系,方法需要重写,父类引用指向子类对象Person s1= new student();
staic方法 属于类的,他不属于方法,不能被重写;
final 修饰的也不能重写;
private私有的也不能重写;
强制类型转换,成功的条件只有如下的俩种:
1、引用所指向的对象,就是该类型
2、引用所指向的对象,实现了该接口或者继承了该类
强转时若不符合如上的条件,则发生ClassCastException类型转换异常
建议强转之前,先通过instanceod判断引用的对象是否是该类型
只要强转 ,必须加判判断
if(0 instanceof b){
b 小 = (小 b)大0 ;
};
设计规则:能用超类,绝不用派生类,能用接口,绝不用 实现类!
instanceof类型转换,引用类型转换
类型之间转换:父 子
子类转换父类,可能丢失自己的本来的一些方法;
staic关键字:
与类一起加载,可以直接使用 类名+.就可以调用;
静态代码块(只在第一次执行)最先执行,匿名代码块次执行,再者是构造方法
行为的多态:
同类型的引用指向不同的对象时,有不同的实现;
—所有抽象方法都是多态的!
同一个对象被造型为不同的类型时,有不同的功能
(所有对象都是多态的
对象的多态,你,我,水,,
对象的多态:
Mee mee=new Mee();===========区别这是对象
儿子 m1=mee;
学生 m2=mee;
铁男 m3= mee;
一定向上造型
超类型的引用指向派生类的对象
能点出什么,看左边引用的类型
能造型成为的数据类型有:超类 +所实现的接口
抽象类:
abstract 修饰的类就是抽象类: 类继承 extends:只有单继承没有多继承,但是接口可以变相实现多继承
abstract 就是约束,方法体不实现,有子类 implement实现后 帮我们实现;
抽象方法,只有方法名字,只有方法的定义,没有具体的实现(连{}都没有)
包含抽象方法的类必须是抽象类
抽象类不能被实例化(new对象)
抽象类是需要被继承的,派生类:
重写所有抽象方法-----------------变不完整为完整
也声明为抽象类---------------------一般不这么用
抽象类的意义:
封装共有的属性和行为---------------代码复用
为所有派生类提供统一的类型------向上造型
可以包含抽象方法,为所有派生类提供统一的入口(能点出来),
派生类的行为不同,但入口是一致的,同时相当于定义了一个标准(强制重写)
匿名内部类:-----------------------大大简化代码
若想创建一个类(派生类)的对象,并且对象只被创建一次,可以做成匿名内部类
在匿名内部类中默认外面的变量为final的----
普通类:只有实现 class
抽象类:具体实现和规范(抽象方法)都有 abstract
接口 :存在的意义就是让别人使用的–所以都是pubilc
是一种引用数据类型
接口的意义:
只有规范! interface定义的
定义的是一组规则,体现了现世界中:“如果你是、、、则必须能、、、”
接口的本质是契约:制定好后大家都遵守。
实现多继承:
制定了一套标准,规则
只能包含 常量和抽象方法;
接口里边 只要是数据 都是常量,但可以声明变量
接口是完全不完整的,不能被new
但,接口是需要被实现,子类都叫实现类;
实现类:必须重写所有的抽象方法 implements
一个类,可以实现多个接口,用,号隔开;
若又继承又实现 ,则先继承在实现;
接口也可以继承接口
作用:
1约束
2定义一些方法,让不同的人实现:10~1 多对一
3接口中的方法都是abstract默认修饰的;
4属性都是staic final修饰的
5接口不能被实例化在~接口中没有构造方法;
6implements可以实现多个接口(就变相的是多继承
7子类必须重写接口中的方法
什么时候使用:
接口是对继承的单根性的扩展-
就是为了类的多实现(继承)的,因为java规定只能单继承,所以换成实现;
当部分共有的时候,使用接口