接口、继承和多态

package com.java.exp10;

import sun.font.EAttribute;

/**
 * 1、类的继承
 *  继承并不只是扩张父类的功能,还可以重写父类的成员方法。
 *  重写,保留父类的成员方法的名称,重写成员方法的实现内容,更改成员方法的存储权限或更改返回值类型。
 *  重构,与父类的成员方法返回值、方法名称、参数类型及个数完全相同,唯一不同的是方法的实现内容。
 *  重写父类方法时,修改方法的修饰权限只能从小范围到大的范围改变。
 *  实例化子类对象时,父类无参构造方法被自动调用,但有参构造方法并不能被自动调用,只能依赖于super关键字显式地调用父类的构造方法
 * 2、Object类
 *  Object类中的getClass()、notify()、notifyAll()、wait()等方法不能被重写。为final类型
 *  getClass()方法
 *  toString()方法    将一个对象返回为字符串形式
 *  equals()方法      比较的是两个对象的实际内容
 * 3、对象类型的转化
 *  3.1、向上转型    直接使用,继承于抽象,可看作父类的一种
 *  3.2、向下转型    使用显式类型转换,向编译器指明将父类对象转换为哪一种类型的子类对象
 * 4、使用instanceof操作符判断对象类型
 *  myobject instanceof ExampleClass
 *  某类的饮用对象         某个类
 *  instanceof是Java语言中的关键字,在Java语言中的关键字都为小写,其返回值是Boolean类型的
 * 5、方法的重载
 *  方法的重载就是在同一个类中允许同时存在一个以上的同名方法,只要这些方法的参数个数或者类型不同即可。
 * 6、多态
 *  Java实现多态有三个必要条件:继承、重写、向上转型
 *  提高了代码的扩展性
 * 7、抽象类和接口
 *  7.1、抽象类
 *      abstract是定义抽象类的关键字,它定义的方法称为抽象方法,抽象方法没有方法体
 *      继承抽象类的所有子类必须将抽象类中的抽象方法记性覆盖
 *      抽象类不能实例化对象
 *  7.2、接口
 *      接口简介
 *      接口是抽象类的延伸,可以将它看作纯粹的抽象类,接口中的所有方法都没有方法体
 *      在接口中定义的方法必须被定义为public或abstract形式,其他修饰权限不被Java编译器认可
 *      在接口中定义的任何字段都自动是static和final的
 *      接口与继承
 *      Java中不允许多重继承,但是使用接口就可以实现多重继承,以为一个类可以实现多个接口,使用逗号隔开就可以
 * 
 * */
public class Demo {
    public static void main(String[] args) {
        Demo demo = new Demo();
        String str = demo.getClass().getName();

        System.out.println(str);
    }
}

Animal类

package com.java.exp10;

public class Animal {

    public void shout(Animal animal){
        System.out.println("叫...");
    }
    public static void eat(Animal animal){
        System.out.println("吃...");
    }
}

Dog类

package com.java.exp10;

public class Dog extends Animal {
    public void eat(){
        System.out.println("啃骨头...");
    }
    //向上转型后只能实现父类中的方法,即使在子类中重写过了,因为使用的是父类的对象,所以不能调用子类
    public static void main(String[] args) {
        Dog dog = new Dog();
        eat(dog);
    }
}

Person类

package com.java.exp10;

public class People {
    String name;
    int age;


    public People() {
        System.out.println("父类无参构造方法被调用...");
    }
    public People(String name, int age) {
        this.name = name;
        this.age = age;
        System.out.println("父类有参构造方法被调用...");
    }
}

Student类

package com.java.exp10;

public class Student extends People {
    String name;
    int age;

    public Student() {
        System.out.println("子类无参构造方法被调用...");
    }
    public Student(String name, int age) {
        this.name = name;
        this.age = age;
        System.out.println("子类有参构造方法被调用...");
    }

    public static void main(String[] args) {
        Student stu = new Student("张三",15);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值