java29

1.封装小练习--长方形
创建长方形类
使用getset方法
利用返回值方法计算长方形的面积,周长。
保证长方形的长宽为整数
2.继承小练习--猫狗
要求有动物的颜色,几条腿,各自的职责
并将以上颜色,腿字段在父类中私有化
当父类中有构造器时,子类也要有构造器,并且要求设置的参数相同

//自己的low方法
class Animal{
    String color;
    int leg;
    void eat() {
        System.out.println("吃东西");
    }
}
class Dog extends Animal{
    Dog(String c,int l){
        System.out.println("狗的颜色是"+c+","+"腿有"+l+"条");
    }
    void work() {
        System.out.println("汪汪汪");
    }
}
class Cat extends Animal{
    Cat(String c,int l){
        System.out.println("猫的颜色是"+c+","+"腿有"+l+"条");
    }
    void work() {
        System.out.println("逮老鼠");
    }
}

public class 继承练习 {
public static void main(String[] args) {
    Dog d = new Dog("白色",4);
    d.work();
    Cat c = new Cat("黄色",4);
    c.work();
}
}
【狗的颜色是白色,腿有4条
汪汪汪
猫的颜色是黄色,腿有4条
逮老鼠】
改进后:
class Animal{
    private String color;
    private int leg;
    Animal(String color,int leg){
        this.color = color;
        this.leg = leg;
    }
    
    public String getColor() {
        return color;
    }

    public int getLeg() {
        return leg;
    }

    void eat() {
        System.out.println("吃东西");
    }
}
class Dog extends Animal{
    Dog(String c,int l){
        super(c,l);
    }
    void work() {
        System.out.println("汪汪汪");
    }
}
class Cat extends Animal{
    Cat(String c,int l){
        super(c,l);
    }
    void work() {
        System.out.println("逮老鼠");
    }
}

public class 继承练习 {
public static void main(String[] args) {
    Dog d = new Dog("白色",4);
    System.out.println("dog");
    d.work();
    System.out.println(d.getColor());
    Cat c = new Cat("黄色",4);
    System.out.println("cat");
    c.work();
    System.out.println(d.getLeg()+"条腿");
}
}
【dog
汪汪汪
白色
cat
逮老鼠
4条腿】
优点:将数据私有化,保证了数据的安全性。并且想输出动物的哪个属性就输出哪个属性,不用全部输出

getset方法
优点:

确保数据的合理性
若使用syso方法输出数据,则需要get方法来获取
3.多态小练习--超人谈生意
4.大概念:
代码块:直接定义在类中或方法中的{ }。
定义在代码块中的变量为局部变量
分类:
局部代码块:定义在方法中,执行方法时才会被调用
初始化代码块:定义在类中(所以其实是构造器后的{ }), 调用一次构造器就执行一次(隐藏的存放在构造器中)
静态代码块:static{ } ,只执行一次,随着字节码的加载而加载。
在main方法之前执行,所以打印出的结果会在最前面

-------小回顾
-1如何调用父类中被隐藏的字段
System.out.println(super.被隐藏的字段名称);

-2如何调用父类中被覆盖的方法
在子类方法中使用super.父类名称
-3如何调用父类中被隐藏的方法
在main方法中使用父类名.方法名

-3方法的覆盖(子类和父类中相同名称的非静态方法)
方法的隐藏(子类和父类中相同名称的静态方法)

-4本类字段的隐藏(在同一个类中,字段名称和方法中参数的名称相同)
调用本类:this.字段名称
调用方法字段:直接写字段名称

-5方法的重载:同一个类中,方法名称相同,但传参个数不同
方法的覆盖:子类和父类中相同的方法签名(方法名称和传参个数)

你可能感兴趣的:(java29)