(Java入门)多态,包,final,权限修饰符,代码块

一.多态

1.多态的概念,多态中调用成员方法的特点

1.有了封装才有面向对象,有了面向对象才有继承和多态。

2.继承是多态的前提条件,没有继承就没有多态

3.多态--对象的多种形态

4.

5.

package com.itheima.duotai;
public class Person {
    private String name;
    private int age;

    public Person() {
    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void show(){
        System.out.println(name+","+age);
    }
}
package com.itheima.duotai;

public class Teacher extends Person{
    @Override
    public void show() {
        System.out.println(getName()+","+getAge());
    }
}
package com.itheima.duotai;

public class Administrator extends Person{
    @Override
    public void show() {
        System.out.println(getName()+","+getAge());
    }
}
package com.itheima.duotai;

public class Student extends Person{
    @Override
    public void show() {
        System.out.println("学生的信息为"+getName()+","+getAge());
    }
}
package com.itheima.duotai;

public class Text {
    public static void main(String[] args) {
        Student s=new Student();
        s.setName("zhangsan");
        s.setAge(18);
        register(s);

        Teacher t=new Teacher();
        t.setName("wang");
        t.setAge(15);
        register(t);

        Administrator a=new Administrator();
        a.setAge(14);
        a.setName("zhu");
        register(a);
    }

    public static void register(Person p){
        p.show();
    }
}

package duotaiDemo;

public class Text {
    public static void main(String[] args) {
        Animal a=new Dog();
        System.out.println(a.name);
    }
}

class Animal{
    String name="动物";
    public void show(){
        System.out.println("Animal-------show方法");
    }
}

class Dog extends Animal{
    String name="狗";

    @Override
    public void show() {
        System.out.println("Dog----------show方法");
    }
}

class Cat extends Animal{
    String name="猫";

    @Override
    public void show() {
        System.out.println("Cat----------show方法");
    }
}

加载字节码文件--先加载父类,再加载子类,父类的父类--object

 2.多态的优势和弊端

object--顶级父类,所有的都继承与object

多态的弊端--不能调用子类的特有方法。

异常exception

instanceof--判断是属于哪个类()

package duotaiDemo;

public class Text {
    public static void main(String[] args) {
        Animal a = new Dog();
        System.out.println(a.name);
        a.show();
        Animal bo=new Cat();
        bo.show();

//        Cat cwm=(Cat)bo;//解决方案:变为子类类型
//        cwm.eathouse();

        if(bo instanceof Dog){
            Dog cwg=(Dog)bo;
            cwg.eatgt();
        }
        else if(bo instanceof Cat ){
            Cat cwm=(Cat)bo;
            cwm.eathouse();
        }else{
            System.out.println("没有这个类型");
        }
    }
}

class Animal {
    String name = "动物";

    public void show() {
        System.out.println("Animal-------show方法");
    }
}

class Dog extends Animal {
    String name = "狗";

    @Override
    public void show() {
        System.out.println("Dog----------show方法");
    }
    public void eatgt(){
        System.out.println("狗吃骨头");
    }
}

class Cat extends Animal {
    String name = "猫";

    @Override
    public void show() {
        System.out.println("Cat----------show方法");
    }
    public void eathouse(){
        System.out.println("猫吃老鼠");
    }
}

3.多态的综合练习

二.包和final

1.包

1. 

2.

3.

2.final

 

final可以修饰方法,类,变量

final--规则--不想让别人去改变

iml--配置文件

三.权限修饰符

四.代码块

 

局部位置:写在方法里面的单独的大括号

局部代码块:提前结束变量生命周期

本质--节约内存   用完回收,不浪费内存

构造代码块:空参构造和带参构造中共有的代码提取出来

弊端:太死不够灵活,改造方法如下:

静态代码块--在程序刚开始的时候,做数据的静态初始化。

main方法也可以被调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值