JAVA基础(12)-继承,接口

继承:

       继承性是面向对象的第二大主要特征。 
       现实世界中:通过分析多种类型,然后发现有一些共同特征和共同行为再将这些种类,归纳为一种新类型
                            如:  黄色皮肤的人
                                      白色皮肤的人
                                      黑色皮肤的人
                                            |
                                           人 
                       
      计算机语言中:
              先编写父类类型,在编写子类型,然后再有对象。
              如:  先编写Animal类型,再编写 Dog类或Cat类型,继承父类的成员变量和方法 ,再使用数据时,要么创建Dog对象/Cat对象                                                          
                                                       
              子类可以继承父类中一些成员变量,和方法。子类还可以添加自己的独有成员变量和方法。
    
              子类:也叫派生类
              父类:也叫超类,基类   

               关键字extends,用于继承语法
                   格式:
                        public class subClass extends SuperClass{
      
                        }  

       继承中的构造器:
         子类不能继承父类的构造器,但是,子类中的构造器可以调用父类的构造器
         语法:super(有参传参);
         作用:可以更好的给继承过来的成员变量赋值
         
        子类中的构造器一定会有一个调用了父类的构造器,父类中如果没有无参构造器,子类需要显式调用父类构造器,如果父类中有无参构造器,子类中的构造器可能隐式调用了父类的无参构造器,即:隐藏了super() 
              
         super()this()的区别:
                  相同点:都是调用构造器,而且必须放在首行首句。
                  不同点:super()是调用父类的构造器,this()是调用本类中其他构造器 

        继承的传递性:
               继承特征有传递特性,B类型继承了A类型的特征,C类型继承了B类型的特征。C类型也间接继承了A类型的特征
               继承的另外一个特点:
                         单继承: 一个子类只能继承一个父类。但是一个父类可以有多个子类       

 

        方法的重写(override)
               子类可以继承父类的方法,在继承时,我们可以在子类中编写与父类中的方法名相同,参数列表也相同的方法。这就是重写。
               (1)父子类关系,方法名相同,参数列表相同
               (2)返回值类型可以相同,也可以不同【子类方法的返回值类型必须是父类方法的返回值类型的子类】   

       父类型的变量可以引用子类型的对象
               如:
                   Animal   a = new GoldFish();
                   Animal类型的变量a引用了子类型GoldFish的对象   
                  符合人类的思维: 这条金鱼是动物    
                    
     编译期绑定:
             在编译过程中,变量只能调出本类型中的方法在编译期间,方法静态绑定到变量上
     运行期绑定:
             在运行过程中,真正执行的方法的逻辑与对象的类型有关系。
             简单说成:方法在运行期间,动态绑定到对象上。
成员变量的调用与变量的类型有关系(与编译期和运行期无关)

也就是说运行过程中执行的方法是子类中重写后的方法,而不是父类中的   

Object:是所有引用类型的顶级父类,
            系统都会默认使引用类型extends Object.

参考代码:

public class Test {
	public static void main(String[] args) {
		Car car = new Car("保时捷", "白色", 4);
		System.out.println(car.showCar());
		
		Truck t = new Truck("奔驰", "黑色", 30);
		System.out.println(t.showTruck());
	}
}

class Vehicles {
	String brand;
	String color;

	public Vehicles(String brand, String color) {
		this.brand = brand;
		this.color = color;
	}

	public void run() {
		System.out.println("我已经开动了");
	}

	public String showInfo() {
		return brand + "," + color;
	}
}
/**小汽车类*/
class Car extends Vehicles {
	int seats;

	public Car(String brand, String color, int seats) {
		super(brand, color);
		this.seats = seats;
	}
	public String showCar() {
		return brand + "," + color + "," + seats;
	}
}
/**卡车类*/
class Truck extends Vehicles{
	float load;
	public Truck(String brand, String color ,float load) {
		super(brand, color);
		this.load = load;
	}
	public String showTruck() {
		return brand + "," + color + "," + load;
	}
}

接口

        有时我们需要从多个不相关的类中设计出一个子类型,而java继承是单继承的,无法满足我们的需求,所以,我们可以使用接口来达到多继承的目的。 
        接口实际上就是一种规范制度。   (规范与规则的理解)

    接口的特点:

            (1)接口使用interface关键字,而不是class,但是我们可以理解成接口是特殊的抽象类
            (2)接口里只能有抽象方法常量     

                        方法:默认使用public abstract    (因为是默认调用的所以在写抽象方法是可直接写 类型 方法名())               

                        常量:默认使用修饰词为public static final
            (3)接口不能实例化,没有任何意义
            (4)接口不能提供构造方法

            (5)接口与接口之间可以使用继承。子接口继承了父接口的抽象方法
            (6)支持多继承

public class MiDoor extends Door implements InterA,InterB{

	public void waterproof() {
		System.out.println("可以防水");
	}
	public void theftproof() {
		System.out.println("可以防盗");
	}
	public void openDoor() {
		System.out.println("正在用小米钥匙开门");
	}
	public static void main(String[] args) {
		MiDoor door = new MiDoor();
		door.waterproof();
	}
}
================================================
public interface InterA {
	public void theftproof();
}
interface InterB{
	public void waterproof();
}
interface InterC{
	public void bulletproof();
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值