- 继承(extends):写出一个类的属性 包内的其它类可以继承它的属性
person 和继承person的boy 都是可以正常调用的
@Test
public void test01() {
person person = new person("邸大大", 1, 18);
System.out.println(person.getNickname());
System.out.println(person.getGender() == 1? "小伙" : "姑娘");
System.out.println(person.getAge());
}
@Test
public void test02() {
boy person = new boy();
person.setNickname("邸大大"); //set get 放法都是从person继承来的
person.setGender(1);
person.setAge(18);
System.out.println("姓名>>>>" + person.getNickname());
System.out.println("性别>>>>" + (person.getGender() == 0? "小伙" : "姑娘"));
System.out.println("年龄>>>>" + person.getAge());
}
- super 关键字
子类继承父类 在子类创建有参构造方法时会有super super是调用父类的构造方法 是给父类的属性赋值
- 子父类实例化顺序
父类代码
public class person {
/**
* 昵称
*/
String nickname;
/**
* 性别 0女生 1男生
*/
int gender;
/**
* 年龄
*/
int age = 18;
public person(){
}
public person(String nickname, int gender, int age) {
System.out.println("我是person的有参构造方法");
this.nickname = nickname;
this.gender = gender;
this.age = age;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public int getGender() {
return gender;
}
public void setGender(int gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
子类代码
public class boy extends person{
public boy(){
}
public boy(String nickname, int gender, int age) {
super(nickname, gender, age);
System.out.println("我是boy类的有参构造方法");
}
}
测试代码
@Test
public void test04() {
boy person = new boy("邸大大",1,36);
System.out.println("姓名>>>>" + person.getNickname());
System.out.println("性别>>>>" + (person.getGender() == 0? "小伙" : "姑娘"));
System.out.println("年龄>>>>" + person.getAge());
}
测试结果
结论:先实例化子类 在子类实例化自己的过程中 先实例化的父类 再实例化自己
子类独有的方法 父类是无法直接调用的
- 在子类中可以重写父类的方法
父类
public class person {
/**
* 昵称
*/
String nickname;
/**
* 性别 0女生 1男生
*/
int gender;
/**
* 年龄
*/
int age = 18;
public person(){
System.out.println("我是person的无参构造方法");
}
public person(String nickname, int gender, int age) {
System.out.println("我是person的有参构造方法");
this.nickname = nickname;
this.gender = gender;
this.age = age;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public int getGender() {
return gender;
}
public void setGender(int gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void eat(){
System.out.println("吃吃吃");
}
}
子类
public class boy extends person {
public boy(){
}
public boy(String nickname, int gender, int age) {
super(nickname, gender, age);
System.out.println("我是boy类的有参构造方法");
}
public void work(){
System.out.println("停车坐爱枫林晚");
}
@Override
public void eat() {
System.out.println("吃包子");
}
}
测试代码
@Test
public void test02() {
JC02.person person = new JC02.person();
person.eat();
JC02.boy boy = new JC02.boy("邸",1,18);
boy.eat();
}
结果
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)