面向对象程序设计特征
封装性:对外有限的公开,隐藏细节,模块代码。
继承性:子类拥有父类全部或部分性质、方法。清晰体现类之间的层次关系。
多态性:方法重载,成员覆写。
类是事物的描述,对象是具体的事物。例如:汽车设计图和汽车。汽车设计图就是类,汽车是对象。
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修饰。
抽象不能被直接实例化。
抽象方法只需要声明,不需要实现。
子类必须覆盖所有抽象方法才能实例化,否则该类也是抽象类。
接口
接口成员数据必须是常量。
所有方法都是抽象方法。
接口可以继承多个接口。