Day7学习总结

0,面向对象三大特性:继承,封装,多态
1,继承:xx是一种xx
public class Cat extends Animal
子类 父类,基类,超类
作用:简化代码(减少代码冗余)
构造方法:父类对象先与子类对象创建
super():调用父类构造函数
重写:当父类方法不能满足子类需求 方法名相同,参数也得相同,子类重写方法访问修饰符不能比父类更严格
equals hashcode
2,访问修饰符
在这里插入图片描述
3,static – 静态的,全局唯一 Math
静态方法中不能出现非静态元素
4,final 不可变的 – 类:不能有子类
属性:必须赋初值,若不赋初值,需要在构造函数中赋初值,一旦赋值, 值不能被改变
方法:不能被重写
局部变量:可以不赋初值。一旦赋值,值不能被改变

【练习题】1.继承:
定义一个名为Vehicles(交通工具)的基类,该类中应包含String类型的成员属性brand(商标)和color(颜色),还应包含成员方法run(行驶,在控制台显示“我已经开动了”)和showInfo(显示信息,在控制台显示商标和颜色),并编写构造方法初始化其成员属性。
编写Car(小汽车)类继承于Vehicles类,增加int型成员属性seats(座位),还应增加成员方法showCar(在控制台显示小汽车的信息),并编写构造方法。 编写Truck(卡车)类继承于Vehicles类,增加float型成员属性load(载重),还应增加成员方法showTruck(在控制台显示卡车的信息),并编写构造方法。 在main方法中测试以上各类。

package dyy;
public class Vehicles {
public String brand;
public String color;
public Vehicles(String brand,String color){
	this.brand=brand;
	this.color=color;
}
public void run(){
	System.out.println("我已经开动了");
}
public void  showInfo(){
	System.out.println("商标:"+brand+"  "+"颜色:"+color);
}
}
public class Car extends Vehicles{
public int seats;
public Car(String brand, String color,int seats) {
		super(brand, color);
		this.seats=seats;
	}
public void showCar(){
	System.out.println("商标:"+super.brand+"  "+"颜色:"+super.color+"  "+"座位:"+seats);
}
}
public class Truck extends Vehicles{
	public float load;
	public Truck(String brand, String color,float load) {
		super(brand, color);
		this.load=load;
	}
	public void showTruck(){
		System.out.println("商标:"+super.brand+"  "+"颜色:"+super.color+"  "+"载重:"+load);
	}
}

public class Test {
	public static void main(String[] args) {
		Car c=new Car("路虎","黑色",5);
		Truck t=new Truck("东风","蓝色",3000000);
		c.showCar();
		t.showTruck();
	}
}

商标:路虎  颜色:黑色  座位5
商标:东风  颜色:蓝色  载重3000000.0

【练习题】2.继承:
编写一个类Calculate1,实现加、减两种运算,然后,编写另一个派生类Calculate2,实现乘、除两种运算。

package dyy;
public class Calculate1 {
public double a;
public double b;
public void add(){
	System.out.println(a+b);
}
public void sub(){
	System.out.println(a-b);
}
public Calculate1(double a,double b){
	this.a=a;
	this.b=b;
}
}
public class Calculate2 extends Calculate1 {
public Calculate2(double a, double b) {
		super(a, b);
	}
public void mul(){
	System.out.println(a*b);
}
public void div(){
	System.out.println(a/b);
}
}
public class Test {
	public static void main(String[] args) {
		 Calculate1 c1=new Calculate1(2,8);
		 Calculate2 c2=new Calculate2(16,8);
		c1.add();
		c2.div();
	}
}
10.0
2.0

【练习题】3.包、继承、构造函数
编写一个控制台应用程序,完成下列功能,并回答提出的问题。
1) 创建一个类A,在构造函数中输出“A”,再创建一个类B,在构造函数中输出“B”。
2) 从A继承一个名为C的新类,并在C内创建一个成员变量B。不要为C创建构造函数。
3) 在Main方法中创建类C的一个对象,写出运行程序后输出的结果。

package dyy;
public class A {
public A(){
	System.out.println("A");
}
} 
package dyy;
public class B {
public B(){
	System.out.println("B");
}
}
package dyy;
public class C extends A{
double B;
}
}


package dyy;
public class Test {
	public static void main(String[] args) {
		C c=new C();
	}
}
输出结果为:
A
 4) 如果在C中也创建一个构造函数输出“C”,整个程序运行的结果又是什么?
package dyy;
public class C extends A{
double B;
public C(){
	System.out.println("C");
}
}

输出结果为:
A
C
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值