导读:一、类的修饰符
二、面向对象三大特征
三、抽象类
四、接口
五、this和super
一、类的修饰符
private: 私有变量,只有在类的内部可以访问
protected: 局部保护变量,只有继承类可以访问
public: 全局变量,任何地方都可以访问
二、面向对象三大特征:封装、继承、多态
封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的帆帆发来实现对隐藏信息的操作和访问。隐藏对象的信息,留出访问的接口。
优点:①隐藏类的实例细节,方便修改和实现
②只能通过规定的方法访问数据(具有清晰的对外接口)
③良好的封装能减少耦合
使用private修饰符,只在内部访问。想要在外部访问,创建setter和getter方法(public)
继承:多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。(什么是什么;狗是动物就可以使用继承。但是不应为了继承部分功能而去使用继承)
通过继承,子类自动拥有了基类(父类 superclass)的所有成员(成员变量和方法)。java只支持单继承,使用extends关键字实现类的继承。
优点:提高代码的复用性;类和类之间产生了关系,为多态提供了前提
继承中的构造方法:子类的构造过程中必须调用父类的构造方法。
使用super调父类、this调自身
如果调用了super,必须写在子类构造方法的第一行。
如果子类的构造方法没有显示地调用父类构造方法,则系统默认调用父类无参数的构造方法。
如果子类的构造方法既没有显示调用父类的构造方法,父类中又没有无参的构造方法,则编译出错。
多态:指在执行期间(而非编译期间)判断所引用对象的实际类型,根据其实际的类型调用其对应的方法。
对同一个客体,可以有多种不同的形式。在面向对象语言中,接口的多种不同的实现方式即为多态。在java中,多态的实现主要通过方法重载和方法重写来实现的。 如果我们用一个父类引用指向子类对象时,会先访问到子类中重写的父类方法(父类的方法不会再执行),如果子类没有重写父类的方法,才会执行父类中的重写办法。同时,子类中没有继承到父类的部分,是不能被执行的。 Anamal a = new dog();
优点:提高程序的可扩展性和后期的可维护性。
缺点:父类调用的时候只能调用父类的方法,因为不知道什么子类去继承你,所以不能调用子类的特有方法。
多态的三要素:继承、重写、父类引用指向子类对象(向上转型)
三、抽象类
用abstract修饰,抽象方法就是用来被重写的,为空;是残缺不全的,不能实例化(无法new),类的声明也要改为抽象。
public abstract void enjoy{ } abstract class....{ }
四、接口(Interface)
接口是一种特殊的抽象类,只有常量和方法的实现,没有变量和方法的实现。
特性: 可以多重实现
声明的属性默认(也只能)是public static final
接口中只能定义抽象方法、方法默认(也只能)是public
接口可以继承其他接口,并添加新的属性和抽象方法
多个无关的类可以实现同一个接口;(implements)
一个类可以实现多个无关的接口;
与继承关系类似,接口与实现类之间存在多态性。
class GoldenMonkey extends Animal implement Valuable , Protectable { }
五、this和super
this:对哪个对象调的方法,this即指向谁。当无法确定某个参数到底指向哪个变量时,指向它最近的声明(就近声明原则)。
class Leaf {
int i = 0;
Leaf (int i) {
this.i = i;
}
}
this可以看作一个变量,它的值是当前引用的对象
super:用来引用父类对象,用法和this类似。