1.类和对象:类可以看成是一类对象的模板,对象可以看成是该类的一个具体实例.
2.类(对象)之间的关系:聚合,继承,实现,多态.
3.内存区分: 类是静态概念,代码区; 对象是new出来的,位于堆内存
4.构造方法(函数):(1)与类同名且没有返回值
(2)用来初始化对象的函数
(3)new+构造方法,创建一个新的对象
5.命名规则:类名的首字母大写,变量名和方法首字母小写,运用驼峰标识
6.栈内存存入一个引用指向堆内存
7.方法重载(OverLoad):相同名字,相同返回类型,当参数不同(个数不同或类型不同),的多个方法
8.static:用static声明的成员变量称为静态的成员变量,公用变量,对于该类的所有对象来说static成员变量只有一份
用static声明的方法称为静态方法,在调用该方法时不会将对象的引用传递给他,所以static方法中不能访问非
static的成员
可以通过对象引用或类名(不需要实例化)访问静态成员
9.访问控制:
10.方法重写(OverRide):在子类中可以根据需要对父类中继承来的方法进行重写
11.equals:Object的equals方法定义为:x.equals(y)当x和y是同一对象的引用时返回true否则返回false(等价于==)
String,Date等类重写了Object中的equals()方法,x.equals(y)当x和y所引用的是同一类对象且属性内容相等时返回true.
12.多态:(1)要有继承
(2)要有重写
(3)父类引用指向子类对象
class Animal {
private String name;
Animal(String name){this.name = name;}
public void enjoy(){
System.out.println("叫声......");
}
}
class Dog extends Animal{
private String color;
Dog(String n,String c){
super(n);
color = c;
}
public void enjoy(){
System.out.println("狗叫声......");
}
}
class Cat extends Animal{
private String eyesColor;
Cat(String n,String c){
super(n);
eyesColor = c;
}
public void enjoy(){
System.out.println("猫叫声......");
}
}
class Lady {
private String name;
private Animal pet;
Lady(String name,Animal pet){
this.name = name; this.pet = pet;
}
public void myPetEnjoy(){
pet.enjoy();
}
}
public class Poolymoph{
public static void main(String[] args) {
Cat c = new Cat("catname","blue");
Dog d = new Dog("dogname","black");
Lady l1 = new Lady("l1",c);
Lady l2 = new Lady("l2",d);
l1.myPetEnjoy();
l2.myPetEnjoy();
}
}
输出为:猫叫声......
狗叫声......
总结:建一个Animal父类,写其enjoy方法,在把Cat、Dog等类作为子类继承Animal类,并重写其enjoy方法;最后把Cat、Pig这些类全部扔进篮子里,调用其enjoy方法,就会自动地去调用Cat、Pig对应的enjoy方法。
13.抽象:抽象类必须被继承,抽象方法必须重写,含有抽象方法的类必须被声明为抽象类
抽象类不能被实例化
抽象方法只需声明,而不需实现
14.final:final的变量的值不能被改变,final的方法不能被重写,final的类不能被继承
15.接口:接口是抽象方法和常量之的定义和集合
从本质上讲,接口是一种特殊的抽象类,这种抽象类中之包含常量和方法的定义,而没有常量和方法的实现
接口特征:1、接口可以多重实现
2、接口中声明的属性默认为public static final的,也只能是public static final的
3、接口中只能定义抽象的方法,而且这些方法默认为public,也只能是public的
4、接口可以继承其他接口,并添加新的属性和抽象方法