一,类和类
类和类是继承关系,子类继承父类,既可以单继承又可以多层继承;
单继承一个子类继承一个父类
多层继承建议不超过三次,否则会冗余
//多层继承实现多继承
class A{//父类A类
private int num=10;
public int getNum(){
return this.num;
}
public void fun(){
System.out.println("你今天真好看!");
}
}
class B extends A{//B类继承A类
private String name="张三";
public String getName(){
return this.name;
}
public void fun(){//方法覆写
System.out.println(this.getNum());
//父类私有域被继承但不可直接使用,需通过getter方法间接获得私有域的内容
}
}
class C extends B{//C类继承B类,相当于间接继承A类
private String name="刘能";
public String getName(){
return this.name;
}
public void fun(){//方法覆写(结果为覆写后的内容)
System.out.println(this.getName());
System.out.println(this.name);
}
}
public class Test{
public static void main(String[] args){
A a=new A();
a.fun();
print(new B());//向上转型(优点在于子类可自动进行向上转型,可实现参数的统一)
print(new C());
}
public static void print(A a){
a.fun();
}
}
二,类和接口
1,类和接口是实现关系,可以单实现也可以多实现,还可以继承一个类的时候实现多个接口
三,接口和接口
接口和接口是继承关系,单继承和多继承都行。
//接口实现多继承
public interface IA{//父接口A(接口为更纯粹的抽象类,结构组成只含全局常量和抽象方法)
void funA();
}
public interface IB {//父接口B(接口前添加I用以区分接口)
void funB();
}
public interface CImpl extends A,B{//接口可继承多个父接口,用,分隔开即可,子接口的命名可选择较为重要的父接口进行命名或自行命名,一般子接口后添加Impl用以区分
void funC();
}
public class Impl implements CImpl{//定义类实现接口(也可直接实现父接口(多个))
public void funC(){//抽象方法的实现
System.out.println("你昨天真好看!");
}
public void funA(){
System.out.println("你今天真好看!");
}
public void funB(){
System.out.println("你明天真好看!");
}
}
public class Test{
public static void main(String[] args){
Impl im=new Impl();//实例化对象
im.funA();
im.funB();
im.funC();
}
}
抽象类和接口的区别
1,成员区别
抽象类: 变量,常量;有构造方法,也有抽象方法和非抽象方法。
接口类: 只能有常量和抽象方法
2,关系区别
类与类:继承,单继承
类与接口:实现,单实现,多实现
接口与接口:继承,单继承,多继承
抽象类和接口类的区别
两个都是抽象的;抽象类强调的是对事物的抽像,而接口类强调的是对行为的抽象。



