Java入门到精通视频学习总结

章节2

课时51 对象转型_1

基本概念

  1. 一个基类的引用类型变量可以“指向”其子类的对象。
  2. 一个基类的引用不可以访问其子类对象新增加的成员(属性和方法)。
  3. 【引用变量 instanceof 类名】可以用来判断该引用类型变量所“指向”的对象是否属于该类或该类的子类。
  4. 子类的对象可以当作基类的对象来使用称作向上转型(upcasting),反之称作向下转型(downcasting)

对象转型实例I

代码


    public class Test {
        public static void main(String[] args) {
            Animal a = new Animal("name");
            Cat c = new Cat("catname","blue");
            Dog d = new Dog("dogname","black");

            System.out.println(a instanceof Animal);// true
            System.out.println(b instanceof Animal);// true
            System.out.println(c instanceof Animal);// true
            System.out.println(a instanceof Cat);// false

            a=new Dog("bigdog","yellow");
            System.out.println(a.name);// bigdog
            System.out.println(a.furname);// error
            Dog d1 = (Dog)a;
            System.out.println(d1.furcolor);// yellow
        }
    } 

内存分析

课时52 对象转型_2

对象转型实例II

对象转型对于可扩展性带来的好处


    public class Test {
        public static void main(String[] args) {
            Test test = new Test();
            Animal a = new Animal("name");
            Cat c = new Cat("catname","blue");
            Dog d = new Dog("dogname","black");
            test.f(a);
            test.f(c);
            test.f(d);
        }

        public void f(Animal a){
            System.out.println("name: "+a.name);
            if(a instanceof Cat){
                Cat c = (Cat)a;
                System.out.println("" + "c.eyesColor"+" eyes"); 
            }else if(a instanceof Dog){
                Dog d = (Dog)a;
                System.out.println("" + "d.furColor"+" fur");   
            }
        }
    }

运行结果

课时53 多态_1

基本概念

  • 动态绑定是指“在执行期间(而非编译期间)”判断所引用对象的实际类型。根据其实际的类型调用其相应的方法。
    多态产生的必要条件
  • 1、要有继承
  • 2、要有重写
  • 3、父类引用指向子类对象(这样当父类调用子类被重写的方法的时候时,多态就会派上用场)

动态绑定和多态

代码


    package TestPolymoph;

    class Animal {
        private String name;

        Animal(String name) {
            this.name = name;
        }

        public void enjoy() {
            System.out.println("叫声······");
        }
    }

    class Cat extends Animal {
        private String eyesColor;

        Cat(String n, String e) {
            super(n);
            this.eyesColor = e;
        }

        public void enjoy() {
            System.out.println("猫叫声······");
        }
    }

    class Dog extends Animal {
        private String furColor;

        Dog(String n, String f) {
            super(n);
            this.furColor = f;
        }

        public void enjoy() {
            System.out.println("狗叫声······");
        }
    }

    class Lady {
        private String name;
        private Animal pet;

        Lady(String name, Animal pet) {
            this.name = name;
            this.pet = pet;
        }

        public void myPetEnjoy() {
            pet.enjoy();
        }
    }

    public class Test {
        public static void main(String[] args) {
            Cat c = new Cat("catname", "blue");
            Dog d = new Dog("dogname", "black");
            Lady l1 = new Lady("l1", c);
            Lady l2 = new Lady("l2", d);
            l1.myPetEnjoy();
            l2.myPetEnjoy();
        }
    }

内存分析

![](http://i.imgur.com/0Ekqeay.png)

课时54 多态_2

课堂练习

分析上面的程序,体会“多态特性”对于系统可扩充性的重要性。
分析游戏物体的多态包装。

游戏图

![](http://i.imgur.com/ahwmlLx.png)

课时55 抽象类

修改课时53的代码以讲解本节课内容


    abstract class Animal {
        private String name;

        Animal(String name) {
            this.name = name;
        }   
        public abstract void enjoy();
    }

概念

  • 含有抽象方法的类必须被声明为抽象类,抽象类必须被重写。
  • 抽象类不能被实例化。
  • 抽象方法只需声明,而不需实现。

课时56 final关键字

代码路径:java\mashibing\TestFinal\TestFinal.java

概念

  • final的类不能被继承。
  • final的方法不能被重写。
  • final变量的值不能被改变(final的成员/局部变量)。

错误说明

课时57 interface_1

接口

概念

  1. 是抽象方法和常量值的定义的集合
  2. 从本质上讲,接口是一种特殊的抽象类,这种抽象类只包含常量和方法的定义,而没有变量和方法的实现。

特性

  1. 接口可以多重实现。
  2. 接口中声明的属性默认是public static final的;也只能是public static final。
  3. 接口中只能定义抽象方法,而这些方法默认为public的,也只能是public的。
  4. 接口可以继承其他接口,并添加新的属性和抽象方法。
  5. 多个无关的类可以实现同一个接口。
  6. 一个类可以实现多个无关的接口。
  7. 与继承关系类似,接口与实现类之间存在多态性。
  8. 定义java类的语法格式:

     class  [extends ] [implements  [,] *]{
        *
    }

接口举例


    interface Singer {
        public void sing();
        public void sleep();                        
    }

    class Student implements Singer {
        private String name;

        Student(Strng name) {
            this.name = this.name;
        }

        public void study() {
            System.out.println("studying");
        }

        public void sing() {
            System.out.println("student is singing");
        }

        public void sleep() {
            System.out.println("student is sleeping");
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }
    }

课时58 interface_2

代码路径:java\mashibing\TestInterface\Valuable.java

课时59 总结

第三章总结

练习(工人、农民、国家干部实现照顾宠物的接口)


    public interface Valuable {
        public void feeding();

        public void playing();
    }

    class worker implements Valuable {
        public void feeding() {
            System.out.println("worker is feeding the pets!");
        }

        public void playing() {
            System.out.println("worker is playing with the pets!");
        }
    }

    class farmer implements Valuable {
        public void feeding() {
            System.out.println("farmer is feeding the pets!");
        }

        public void playing() {
            System.out.println("farmer is playing with the pets!");
        }
    }

    class official implements Valuable {
        public void feeding() {
            System.out.println("official is feeding the pets!");
        }

        public void playing() {
            System.out.println("official is playing with the pets!");
        }
    }

章节3

课时60 异常的概念_1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值