面向对象程序设计特征
封装性:对外有限的公开,隐藏细节,模块代码。
继承性:子类拥有父类全部或部分性质、方法。清晰体现类之间的层次关系。
多态性:方法重载,成员覆写。
类是事物的描述,对象是具体的事物。例如:汽车设计图和汽车。汽车设计图就是类,汽车是对象。
class Car
{
String color=black;
String country=China;
void show()
{
System.out.println(color+","+country);
}
}
内存表现
对象比较
“==”是比较对象的地址是否相等,“equals()”是比较内容是否相等。
非静态内部类不能定义静态成员方法,可定义非静态成员方法,静态内部类可定义非静态、静态成员方法。
new一个对象初始化内容(一切言语尽在代码中)
class fu { static { System.out.println("a"); } { System.out.println("c"); } fu() { System.out.println("d"); } } class zi extends fu { static { System.out.println("b"); } { System.out.println("e"); } zi() { System.out.println("f"); } } class fuzi { public static void main(String[] args) { new zi(); } }
重写是子类的方法覆盖父类的方法,要求方法名和参数都相同。
重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同。
多态
class Person { void show1() { System.out.println("Person1"); } void show2() { System.out.println("Person2"); } } class Student extends Person { void show1() { System.out.println("Student1"); } void show3() { System.out.println("Student3"); } } class PersonDemo3 { public static void main(String[] args) { Person p=new Student(); System.out.println(p); Student s=(Student)p; System.out.println(s); s.show3(); } }
多态就是创建父类对象用子类实现。
多态中能用子类覆盖的方法,但不能用父类没有定义的方法。
Person p=new Student();是向上转型。
Student s=(Student)p;是向下转型。
向上转型会有精度损失,向下转型能用到父类中没有定义子类中有的方法。
s和p指向同一处内存。
抽象类
抽象类与和抽象方法必须用abstract修饰。
抽象不能被直接实例化。
抽象方法只需要声明,不需要实现。
子类必须覆盖所有抽象方法才能实例化,否则该类也是抽象类。
接口
接口成员数据必须是常量。
所有方法都是抽象方法。
接口可以继承多个接口。