JavaSE 面向对象(二)

2018-04-03  本文已影响0人  23b57d72cde7

面向对象 2
多态的存在有三个必要条件:
要有继承,要有重写,父类引用指向子类对象
Car c= new Bus();
向上转型 Car c= new Bus();多态的实现
向下转型 Bus b = (Bus) c; 方便调用子类本身的方法
final 关键字
修饰变量,方法,常量 类
修饰变量 变量变常量
修饰方法 方法不能重写
修饰类 类不能被继承
static final 可以定一个静态全局常量
抽象类的定义:
至少包含一个抽象方法的类
抽象类和抽象方法 都是通过abstatct 关键字修饰
子类继承抽象类必须重写所有的抽象方法,除非子类也是抽象类
抽象类可以继承普通类 抽象类可以继承抽象类
抽象类可以拥有自己的属性和方法和构造方法
抽象类 = 普通类 + 抽象方法
接口 :interface
接口是抽象类的抽象 是一个完全抽象的类
接口中只有抽象方法和全局静态常量
接口的存在是为了让子类实现 implements
普通类继承抽象类 实现接口
java是单继承 多实现(特例 接口和接口之间是多继承关系)
抽象类可以实现接口
接口可以继承接口
接口和抽象类的区别:
抽象类拥有普通类的属性和方法 而接口只有抽象方法
接口 = 完全抽象(抽象类)

package com.sxt;

public class Primary extends Language{
    public Primary() {
        System.out.println("Primary的构造方法");
    }
    static {
        System.out.println("Primary的静态代码块");
    }
    {
        System.out.println("Primary的代码块");
    }
    public static void main(String[] args) {
        new Primary();
    }
}
package com.sxt;

public class Language extends Teacher{
    public Language() {
        System.out.println("Language的构造方法");
    }
    static {
        System.out.println("Language的静态代模块");
    }
    {
        System.out.println("Language的代码块");
    }
}
    public class Teacher extends Human{
        public void drink() {
            System.out.println(name+"喝奶");
        }
        public void run() {
            System.out.println(name+"跑步");
        }
}

        String name;
    //重写    
    public void drink() {
            System.out.println(name+"喝水");
        }
    //重载
        public void run (String name) {
            super.name = name;
            System.out.println(name+"跑步");
            
        }
            public void Poetey() {
            System.out.println("语文老师教诗经");
        }
>Animal父类
package com.sxt;

public class Animal {
    private int age;
    public Animal() {
        
    }
    public Animal(int age) {
        this.age = age;
    }
    public void introduce() {
        System.out.println("我今年"+age+"岁了");
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}
>Fish子类
package com.sxt;

public class Fish extends Animal{
    private double weight;
    public Fish(int age,double weight) {
        super(age);
        this.weight = weight;
    }
    public void swimming() {
        System.out.println("游泳"+weight+"克");
    }
    public double getweight() {
        return weight;
    }
    public void setweight(double weight) {
        this.weight = weight;
    }
}
>Bird子类
package com.sxt;

public class Bird extends Animal{
        private String color;
        public Bird() {
            
        }
        public Bird(int age,String color) {
            super(age);
            this.color = color;
        }
        public void fly() {
            System.out.println("飞翔"+color+"色");
        }
        public String getColor() {
            return color;
        }
        public void setColor(String Color) {
            this.color = color;
        }
}
>Test类
package com.sxt;

public class Test {
    public static void main(String[] args) {
        Fish GoadFish = new Fish(5,666.9);
        GoadFish.introduce();
        GoadFish.swimming();
        Bird bird = new Bird(9,"Blue");
        bird.introduce();
        bird.fly();
    }
    
}
 abstract class Ouper {
        
    //方法内部类
        class Inter {
            
        }
        public abstract void run();
        //静态内部类
        static class eat {
            void chi() {
            System.out.println("吃金科");
        }
            }
        //局部内部类
        public void fly() {
            class iinter{
                public void ffly() {
                    System.out.println("飞飞飞");
                }
            }
            System.out.println("飞");
        }
        public static void main(String[] args) {
            //匿名内部类
            //创建匿名内部类对象
                                Ouper o = new Ouper() {
                public void run() {
                    System.out.println("跑");
                }
            };
            o.run();
        }
    }
上一篇下一篇

猜你喜欢

热点阅读