面向对象语言的三大特性:封装、继承、多态
确切地说,那些没有声明成static的部分,才是对象的原型。
(static的被称为类变量和类方法,由属于该类的所有对象共享)
对象中的变量,称为“属性”或"实例变量"。
实现各种行为的过程和函数,称为"方法"。
创建对象实例
如果不使用new的话,只有对象的引用(也就是指针)而没有分配内存空间。
Student jolin = new Student(); Student jolin = new Student("Jolin","female",160,21);//构造函数
class 子类名称 extends 父类名称
Java子类不能继承父类的构造函数。
重写(或覆盖):即子类中的同名函数会取代父类的实例方法。
不过,对于父类中的类方法,子类想要覆盖它必须也将该同名函数定义为类方法来取代它,称为“隐藏”。
隐藏父类的成员变量
只要变量名称相同,就算数据类型不同,也一样可以隐藏父类的成员变量。
如何在子类中,使用父类的构造函数、被重写的方法、被隐藏的成员变量?
super.xxx(父类中的函数名)
只有常量和抽象方法(只有声明,没有实现)。
写法:
IArea是一个接口,类使用implements实现接口。
接口也可以不止一个,用逗号分隔。
常量类型: final
interface IArea{ final double PI = 301415926; void area(); } class Circle implements IArea{ public void area(){ //计算圆面积 } }
接口也可以继承。
在Java中,类不允许多重继承(表示父类不止一个),但却允许接口的多重继承。
接口一定是抽象类。
除了有抽象方法,也可以有属性(变量)和操作。
写法:
abstract class Account{ private string id; private double amount; public abstract void calInterest();//抽象方法 double getBalance(){...};//抽象类中也可以有操作 }
抽象类可以用来作为数据类型,声明引用子类的对象变量。
因为父类的对象变量可以引用子类的对象。(也就是父类的指针可以指向子类吧。)
比如:
Account s2 = new SavingAccount("002-10-333-12",0.02);
Java可以同时继承抽象类且实现接口
class A extends B implements C
常量类
避免继承,防止子类访问和重写
final class
嵌套类的特点
匿名嵌套类,通常用于Java的Swing开发和Android接口组件的事件处理。
动态绑定
多个子类实现同一抽象方法,在调用时根据对象的类型决定实际调用的方法。