目录
2)super关键字来访问父类的成员,super代表父类对象
1.static方法
1)静态方法:可直接通过类名访问
静态方法中不能使用this和super
不能直接访问所属类的实例变量和实例方法
可直接访问类的静态变量和静态方法
2)实例方法:通过实例访问
可直接访问所属类的静态变量、静态方法、实例变量和实例方法
静态方法必须被实现
2.继承



父类 子类 子类
1)继承的作用
减少代码量
方便修改代码
2)如何使用继承
①编写父类
[访问修饰符] class Pet {
//公共的属性和方法
}
②编写子类,继承父类
[访问修饰符] class Dog extends Pet {
//子类特有的属性和方法
}
继承是Java中实现代码重用的重要手段之一。Java中只支持单根继承,即一个类只能有一个直接父类
3)子类继承父类的什么?
继承public和protected修饰的属性和方法,不管子类和父类是否在同一个包里
继承默认权限修饰符修饰的属性和方法,但子类和父类必须在同一个包里
4)子类可以继承父类的所有资源吗?
不能被继承的父类成员:
private成员
子类与父类不在同包,使用默认访问权限的成员
构造方法
3.super关键字
1)子类访问父类
①访问父类构造方法
super();
super(name);
②访问父类属性
super.name;
③访问父类方法
super.print();
2)super关键字来访问父类的成员,super代表父类对象
super只能出现在子类的方法和构造方法中
super调用构造方法时,只能是第一句
super不能访问父类的private成员
3)继承条件下构造方法的调用规则
子类构造方法没有通过super显式调用父类的有参构造方法,也没通过this显式调用自身其他构造方法。
系统默认调用父类的无参构造方法。
子类构造方法通过super显式调用父类的有参构造方法。
执行父类相应构造方法,而不执行父类无参构造方法。
子类构造方法通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则。
4.例题
编写一个Java应用程序,设计一个汽车类Vehicle, // 包含的属性有车轮个数wheels和车重weight。 // 小车类Car是Vehicle的子类,其中包含的属性有载人数loader。 // 卡车类Truck是Car类的子类,其中包含的属性有载重量payload。 // 每个类都有构造方法进行属性初识化和输出相关数据的方法; // 使用Test类中的main方法定义各类初始化数据后台打印相关数据
package com.homework.eight.demo02;
public class Test {
public static void main(String[] args) {
Vehicle vehicle1 = new Vehicle(4,1.5);
Car car1 = new Car(4,1.6,5);
Truck truck1 = new Truck(4,1.8,4,3.5);
vehicle1.printInfo();
car1.printInfo();
truck1.printInfo();
}
}
package com.homework.eight.demo02;
public class Vehicle {
private int wheels;
private double weight;
public Vehicle() {
}
public Vehicle(int wheels, double weight) {
this.wheels = wheels;
this.weight = weight;
}
/**
* 获取
* @return wheels
*/
public int getWheels() {
return wheels;
}
/**
* 设置
* @param wheels
*/
public void setWheels(int wheels) {
this.wheels = wheels;
}
/**
* 获取
* @return weight
*/
public double getWeight() {
return weight;
}
/**
* 设置
* @param weight
*/
public void setWeight(double weight) {
this.weight = weight;
}
public void printInfo(){
System.out.println("车轮:"+this.getWheels()+"车重:"+this.getWeight());
}
}
package com.homework.eight.demo02;
public class Car extends Vehicle{
private int loader;
public Car() {
super();
}
public Car(int wheels, double weight, int loader) {
super(wheels, weight);
this.loader = loader;
}
/**
* 获取
* @return loader
*/
public int getLoader() {
return loader;
}
/**
* 设置
* @param loader
*/
public void setLoader(int loader) {
this.loader = loader;
}
public void printInfo(){
System.out.println("车轮:"+this.getWheels()+"车重:"+this.getWeight()+"载人数:"+this.getLoader());
}
}
package com.homework.eight.demo02;
public class Truck extends Car{
private double payload;
public Truck() {
super();
}
public Truck(int wheels, double weight, int loader, double payload) {
super(wheels, weight, loader);
this.payload = payload;
}
/**
* 获取
* @return payload
*/
public double getPayload() {
return payload;
}
/**
* 设置
* @param payload
*/
public void setPayload(double payload) {
this.payload = payload;
}
public void printInfo(){
System.out.println("车轮:"+this.getWheels()+"车重:"+this.getWeight()+"载人数:"+this.getLoader()+"载重量:"+this.getPayload());
}
}
399

被折叠的 条评论
为什么被折叠?



