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方法的重载:同一个类中,方法名称相同,但传参个数不同
方法的覆盖:子类和父类中相同的方法签名(方法名称和传参个数)

原文地址:https://www.cnblogs.com/-zero/p/10366128.html