————封装
对象
1万物皆对象
2每个对象都是唯一的
3对象都具有属性和行为
类
类是一组具有相同属性和行为的对象的集合。对象所拥有的特征称为类的属性,对象的行为称为类的对象的抽象。
封装
1属性私有化
2添加getter和setter方法
3在赋值与取值的方法中,加入对属性的存取控制
访问修饰符 | 本类 | 同包其他类 | 不同包子类 | 不同包非子类 |
Public | 可以 | 可以 | 可以 | 可以 |
Protected | 可以 | 可以 | 可以 | 不可以 |
默认 | 可以 | 可以 | 不可以 | 不可以 |
Private | 可以 | 不可以 | 不可以 | 不可以 |
重载的特点是:
1在同一个类中发生
2方法名相同
3参数列表不同
其中参数列表的不同可以是:个数不同,顺序不同,类型不同。
方法重载具体规范:
1方法名一定要相同。
2方法的参数列表必须不同,包括参数的类型或个数
(1)如果参数个数不同,就不管它的参数类型了
(2)如果参数个数相同,那么参数的类型或者参数的顺序必须不同
3方法的返回类型、修饰符可以相同,也可以不同
什么是构造方法
构造方法constucory是用来实例化个类的对象的,构造方法有如下特点:
1.构造方法是一个特殊的方法,Ja中的每个类都有构造方法,用来初始化该类的一个对象,
2.构造方法名和类名相同,没有返回类型。
3.构造方法可以重载。
4.沟造方法只能由new关健字和this()调用,this()只能在构造方法中使用,用来调用其它构造方法,且只能作为构造力法代码体的第一条语句
封装就是把不想或者不该告诉别人的东西隐藏起来,把可以告诉别人的公开《隐藏对象的属性和方法的实现细节,只公开对外接口》
封装的具体做法就是把属性私有化,提供公有的方法访问这些属性,在这些公有方法中实现对属性的控制
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载。
构造方法可以重载
————继承
继承
寻找具有共同特征和行为的子类
继承的传递性
继承需要符合的关系
子类具有父类的属性和行为,以及自身特殊的属性和行为
继承的实现细节
Extends关键字
方法重写(override)
Super关键字
Protected访问修饰符
继承关系是可传递的
1子类除了可以调用父类的方法,也可以调用父类的父类的方法,也就是说继承可以确保某个父类型之下的所有类都会有父类型所持有的全部方法。
2单一继承性继承性Java不支持乡重继承,因为多重继承会有称为“致命方块”的问题。
3最终类Java还有一个关键字final,用它修饰的类不能被继承,称为最终类。不想被其物类继承的工具类一般都会做成最终类,我们以前学过的Math类就是最终类
子类构造方法和父类构造方法的关系
1. 子类构造方法显式调用父类构造方法
2. 子类构造方法隐式调用父类构造方法
继承的意义
1避免代码冗余,提高代码的可重用性和可维护性
2父类的属性和方法可用于子类
3可以轻松地自定义子类,设计应用程序变得更加简单
总结
继承可以让我们在编码上省去大量的时间,在继承的概念上,父类就是最基本的类,相当于做一个模板,父类一定要做的一般化,这样才有利于了类扩展。
子类可以继承父类的属性和方法,还可以扩展出自己特殊的属性和方法。
在继承关系中,父类和子类需要满足is-a的关系。
继承可以防止子类中出现重复的程序代码,也就是实现代码重用。
在继承关系中,如果子类中拥有个与父类方法名相问,参数列表相同,返回类型相同的方法,那么我们称为子类的方法重写了父类的方法。
super关键字可以用于访问父类的属性、方法、构造方法,子类构造方法中访间父类构造方法时,super关键了必须位于子类构造方法的第一句。
继承关系是可传递的
子类除了可以调用父类的方法,也可以调用父类的父类的方法,也就是说继承可以确保某个父类型之下的所有类都会有父类型所持有的全部方法。
Java具有单一继承性,类不能同时继承自名个父类。
final关键字修饰的类被称为最终类,最终类是不能被继承的。
如果父类只提供了带参的构造方法而没有提供默认无参的构造方法,那么子类构造方法中必须显式的调用父类带参的构造方法。
如果子类构造方法中没有显式的使用super 关键字明确指明调用父类的哪个构造法子类构造方法此时就会隐式的调用父类的默认无参构造方法。此时父类必须有一个默认的无参构造方法。
————多态
java中实现多态的必要条件
要有继承
要重写
父类引用指向子类对象
必须实现所有抽象的方法
父类抽象的方法没有内容,它只是为了标记出多态而存在。这表示子类必须实现所有的抽象方法。
编译器不会让你实例化抽象类
public class Test {
public static void main (String[] args){
Animal animal ;
animal = new Cat2("小白) ;
animal.eat () ;
animal= new Animal (”小白) ;
}
多态就是具有多种表现形式,理论性的说法是由继承产生的相关的不同的子类,其对象对同一消息(方法调用)会做出不同的响应。
使用多念可以大大增强程序的可维护性和可扩展性。
使用abstract 关键字修饰的类叫做抽象类,抽象类不能被实例化。
继承自抽象类的类要实现所有的抽象方法。
使月abstract关键字修饰的方法叫做抽象方法,抽象方法没有方法体,它必须由子类重写。包含抽象方法的类一定要声明为抽象类,但是抽象类中不定都是抽象方法,抽象类中可以有具体实现的方法。
抽象类和接口的区别
含有abstract修饰符的class即为抽象类,抽象类不能实例化,抽象类中的方法不必都是抽象的,抽象类必须被继承。
接口是一种特殊的抽象类,接口中的方法都是抽象方法,并且接口不能有构造方法,接口只能被类实现,不能被继承。实现某个接口,就是要重写接口中所有的抽象方法。
一个类可以实现多个接口,但只能继承一个类。