`
angeo2010
  • 浏览: 18359 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JAVASE--面向对象2

阅读更多


父类和子类

子类到父类称为抽象(泛化)

父类到子类称为特化

1.继承关系下的构造方法

super:

默认调用的,如果不提供,默认提供,如果提供了,必须在第一行;

super和this都用作调用构造方法时不能同时使用

1)在子类构造方法中调用父类的构造方法

2)在子类中访问父类成员


2.覆盖(@override 覆盖的标注,如果不符合覆盖原则的规范,则会报错)

(static,private,属性,不能有覆盖)

1)方法名必须一样

2)参数表一样

3)返回值类型要么一样,要么子类方法的返回值类型是父类方法返回值类型的子类

4)权限修饰符要么一样,要么子类的权限范围要大于父类方法的权限范围

5)异常

6)当用父类的引用去调用方法时:

如果用父类的引用操作子类对象且调用方法,时

看父类有没有这个方法

如果有:

如果没有:不能编译

首先看子类有没有覆盖父类的方法,如果有覆盖,就调用子类的方法;

如果没有,则调用父类的方法

Object:equals方法,比较的是地址

String:重写了Object,equals方法比较的是对象的内容(==比较的是地址)

String str = "11";

String str1 = "11";

String str2 = new String(11);

str.equals(str1);//true

str.equals(str2);//true

str == str1;//true(共享字符串池中的“11”)

str == str2;//false


3.static

静态属性,该类型的所有对象共用一份,且可以用类名直接访问(权限够)

非静态属性,该类型的所有对象各有一份

非静态方法,不仅可以访问静态成员,还可以访问非静态成员

静态方法仅能访问静态成员;

凡是被static修饰的成员,统称为类级别成员

凡是非静态成员统称为对象级成员


4.final

1)修饰属性(常量)

2)修饰方法,凡是被final修饰的非静态方法不能重写(覆盖)

3)修饰类(没有子类),例如 String


5.多态

第一阶段:Animal a = new Tiger();  最低级的多态使用方式

第二阶段:使用参数来保证多个子类匹配    instanceof  或者     getClass,   getClass比instanceof优秀点 举例多态1 Dinner

第三阶段:使用反射机制对入口方法进行耦合度的降低    举例duotai2  Car


6.抽象类(abstract)(抽象类或者父类相当于一个接口,只是比接口多了属性。

(接口仅是一个行为))

1)抽象类不一定有抽象方法

2)有抽象方法的类,一定是抽象类(抽象方法不允许有方法体)

3)继承抽象类的子类要么必须实现抽象类中的所有方法,要么就将子类变成抽象类


三个角色:

1)接口定义者

2)接口实现者

3)接口使用者

注意:

1)类之间的继承只能是单继承;

2)接口之间的继承可以是多继承;

public interface A {}

public interface B {}

public interface Interface extends A,B{

//相同效果

int a = 3;

//final int a = 3;

//static final int  a = 3;

//public static final int a = 3;

void fun();//public absract void fun();

}

3)类与接口之间可以是多继承


7.接口

接口中定义的属性(一定是:public static final 修饰的,int a = 3;

等同于public static final int a = 3;)

接口定义的方法(一定是public abstract 修饰的void run();

等同于public abstract void run();)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics