1.接口
(1)接口中的成员方法全是抽象的,不允许有普通方法
(2)定义抽象方法:固定格式
public abstract 返回值类型 方法名字(参数列表)
(3)接口中抽象方法, 修饰符public 写或者不写,都是public
固定只能用public 权限
(4)接口中成员变量的定义:
要求:必须定义为常量,即使你的代码是这样写的:public int a,底层语言也会默认加上public static final int a转为常量。
固定格式:
public static final 数据类型 变量名 = 值
2. 接口中变量写法注意:
//所以:
public static final (1)这些修饰符在接口中可以不写,
(2)但是不写不等于没有。
(3)也可以选择性书写 比如只写public
eg.public static final int x = 3; --> int x = 3;
3. 接口中成员方法写法注意:
(1) public abstract 这些修饰符在接口中可以不写,
(2)但是不写不等于没有。
(3)也可以选择性书写 比如只写public
(4)继承接口的类的方法,权限必须带public
eg。 clas aImpl implements B{
public void work(){} //public 必须带
}
4. 接口多实现,没有安全隐患吗?
多实现没有安全隐患,原因在于接口中的方法全是抽象,没有主体。
依赖实现类,重写才可以执行,接口多实现中,没有安全问题的。
5. 接口多实现,避免的错误举例。
(1)C 实现AB,AB的抽象方法同名,同参,不同返回值。实现哪个都报错
public class A{ public abstract void a(); }
public class B{ public abstract int a(); }
public class C implements A,B{
public abstract int a(); //XXXX
public abstract void a(); //XXXX
6.接口与接口之间可以是多继承的关系。
问:Java中有多继承吗?
答:类没有多继承,
接口之间有多继承
7.接口的优点:
(1)增加可扩展性
(2)降低耦合性
8.接口和抽象类的区别:
eg.犬:方法:吃饭
吼叫
缉毒犬:方法:吃饭
吼叫
缉毒(额外功能)
class 缉毒犬 extends 犬科 implements 缉毒:
is a 关系 like a关系
这条缉毒犬是犬科的一种,看起来是缉毒犬
区别;(1)抽象类的子类可以实现父类的部分方法;接口的实现类必须实现接口的全部方法
(2)一个类只能继承1个父类,可以实现多个接口
二者的选用:
优先使用接口,尽量少用抽象类
9.多态
(1)通过多态new 一个对象,调用方法时,调用的是子类的方法
public class Student extends Person{
public void work(){}
Person p = new Student();
p.work()://调用的是子类student的方法
}
(2)多态中成员变量:
编译的时候,参考父类中有没有这个变量,如果有,编译成功,没有编译失败!!!
运行的时候,运行的是父类中的变量值
public class Zi extends Fu{}
//
Fu f new Zi();
System.out.println(f,a);//输出的变量是父类的变量a
(3)多态中的成员方法:
编译的时候,参考父类中有没有这个方法,如果有,编译成功,没有编译失败。
运行的时候,运行的是子类的重写方法。
!!!理解上述:参考孔子装爹案例。(网上搜)
10 instance of 关键字
eg.Student extends Person
Person p = new Student;
boolean b = p instanceof Student;//比较,p是不是Student类型的对象,如果是,intanceof返回true。
11. Fu f = new Zi();
//运算的两个数据类型,是不同的。父类是父类类型,子类是子类类型。父类范围大,子类范围小,子类强制提升为父类类型。简称向上转型。
12.多态中成员访问的特点分别是什么?
在多态中
对于普通方法:
编译时看左边,运行时看右边。
对于静态方法:
编译、运行都看左边
对于成员变量:
编译、运行看左边
13.如果一个方法的返回值类型是父类,那么能否返回一个子类对象?
可以,相当于自动类型提升。
(1)接口中的成员方法全是抽象的,不允许有普通方法
(2)定义抽象方法:固定格式
public abstract 返回值类型 方法名字(参数列表)
(3)接口中抽象方法, 修饰符public 写或者不写,都是public
固定只能用public 权限
(4)接口中成员变量的定义:
要求:必须定义为常量,即使你的代码是这样写的:public int a,底层语言也会默认加上public static final int a转为常量。
固定格式:
public static final 数据类型 变量名 = 值
2. 接口中变量写法注意:
//所以:
public static final (1)这些修饰符在接口中可以不写,
(2)但是不写不等于没有。
(3)也可以选择性书写 比如只写public
eg.public static final int x = 3; --> int x = 3;
3. 接口中成员方法写法注意:
(1) public abstract 这些修饰符在接口中可以不写,
(2)但是不写不等于没有。
(3)也可以选择性书写 比如只写public
(4)继承接口的类的方法,权限必须带public
eg。 clas aImpl implements B{
public void work(){} //public 必须带
}
4. 接口多实现,没有安全隐患吗?
多实现没有安全隐患,原因在于接口中的方法全是抽象,没有主体。
依赖实现类,重写才可以执行,接口多实现中,没有安全问题的。
5. 接口多实现,避免的错误举例。
(1)C 实现AB,AB的抽象方法同名,同参,不同返回值。实现哪个都报错
public class A{ public abstract void a(); }
public class B{ public abstract int a(); }
public class C implements A,B{
public abstract int a(); //XXXX
public abstract void a(); //XXXX
6.接口与接口之间可以是多继承的关系。
问:Java中有多继承吗?
答:类没有多继承,
接口之间有多继承
7.接口的优点:
(1)增加可扩展性
(2)降低耦合性
8.接口和抽象类的区别:
eg.犬:方法:吃饭
吼叫
缉毒犬:方法:吃饭
吼叫
缉毒(额外功能)
class 缉毒犬 extends 犬科 implements 缉毒:
is a 关系 like a关系
这条缉毒犬是犬科的一种,看起来是缉毒犬
区别;(1)抽象类的子类可以实现父类的部分方法;接口的实现类必须实现接口的全部方法
(2)一个类只能继承1个父类,可以实现多个接口
二者的选用:
优先使用接口,尽量少用抽象类
9.多态
(1)通过多态new 一个对象,调用方法时,调用的是子类的方法
public class Student extends Person{
public void work(){}
Person p = new Student();
p.work()://调用的是子类student的方法
}
(2)多态中成员变量:
编译的时候,参考父类中有没有这个变量,如果有,编译成功,没有编译失败!!!
运行的时候,运行的是父类中的变量值
public class Zi extends Fu{}
//
Fu f new Zi();
System.out.println(f,a);//输出的变量是父类的变量a
(3)多态中的成员方法:
编译的时候,参考父类中有没有这个方法,如果有,编译成功,没有编译失败。
运行的时候,运行的是子类的重写方法。
!!!理解上述:参考孔子装爹案例。(网上搜)
10 instance of 关键字
eg.Student extends Person
Person p = new Student;
boolean b = p instanceof Student;//比较,p是不是Student类型的对象,如果是,intanceof返回true。
11. Fu f = new Zi();
//运算的两个数据类型,是不同的。父类是父类类型,子类是子类类型。父类范围大,子类范围小,子类强制提升为父类类型。简称向上转型。
12.多态中成员访问的特点分别是什么?
在多态中
对于普通方法:
编译时看左边,运行时看右边。
对于静态方法:
编译、运行都看左边
对于成员变量:
编译、运行看左边
13.如果一个方法的返回值类型是父类,那么能否返回一个子类对象?
可以,相当于自动类型提升。