欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > Javase 基础入门 —— 04 继承

Javase 基础入门 —— 04 继承

2025/5/15 0:21:01 来源:https://blog.csdn.net/lango_LG/article/details/147464405  浏览:    关键词:Javase 基础入门 —— 04 继承

本系列为笔者学习Javase的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员Java+AI智能辅助编程全套视频教程,java零基础入门到大牛一套通关》,章节分布参考视频教程,为同样学习Javase系列课程的同学们提供参考。

01 什么是继承?

Java中提供了一个关键字extends,用这个关键字,可以让一个类和另一个类建立起父子关系。

注:① 子类只能继承父类的非私有成员

② 子类的对象是由子类、父类共同完成的

People.java人类

package company;//父类
public class People {private String name;private char gender;public String getName() {return name;}public void setName(String name) {this.name = name;}public char getGender() {return gender;}public void setGender(char gender) {this.gender = gender;}
}

Teacher.java教师类

package company;//子类
public class Teacher extends People{private String skill;public String getSkill() {return skill;}public void setSkill(String skill) {this.skill = skill;}
}

Test.java测试

package company;public class Test {public static void main(String[] args) {Teacher t = new Teacher();t.setName("Celeste");t.setGender('女');t.setSkill("C++、Java、Python");System.out.println(t.getName());System.out.println(t.getGender());System.out.println(t.getSkill());}
}

02 权限修饰符

权限修饰符是用来限制类中成员(成员变量、成员方法、构造器)能够被访问的范围。

在这里插入图片描述

package family;public class Father {//1.private 本类中访问private void privateMethod(){System.out.println("privateMethod");}//2.缺省 本类中、同一个包下其他类中访问void Method(){System.out.println("Method");}//3.protected 本类中、同一个包下其他类中、子类中访问protected void protectedMethod(){System.out.println("protectedMethod");}//4.public 任意类中访问public void publicMethod(){System.out.println("publicMethod");}public static void main(String[] args) {Father f = new Father();f.privateMethod();f.Method();f.protectedMethod();f.publicMethod();}
}

03 继承的特点

在这里插入图片描述

为什么不支持多继承?

在这里插入图片描述

为什么Object是祖宗类?

在这里插入图片描述

package family;public class Test {public static void main(String[] args) {Zi z = new Zi();z.show();}
}class Fu{String name = "Fu的name";public void run(){System.out.println("Fu的run方法");}
}class Zi extends Fu{String name = "Zi的name";public void show(){String name = "show的name";System.out.println(name); //show的nameSystem.out.println(this.name); //Zi的nameSystem.out.println(super.name); //Fu的namerun(); //Zi的run方法super.run(); //Fu的run方法}public void run(){System.out.println("Zi的run方法");}
}

在这里插入图片描述

04 方法重写

当子类觉得父类中的某个方法不好用,或者无法满足自己的需求时,子类可以重写一个方法名称、参数列表一样的方法,去覆盖父类的这个方法,这就是方法重写。

“声明不变,重写实现”

package family;public class Test2 {public static void main(String[] args) {cat c = new cat();c.cry();}
}class animal{public void cry(){System.out.println("动物会叫~");}
}class cat extends animal{@Override //更安全,更优雅public void cry(){System.out.println("喵喵喵~");}
}

@Override为方法重写的校验注释,其要求方法名称和形参列表必须与被重写方法一致,否则报错!更安全、更可读、更优雅!

在这里插入图片描述

注:① 子类重写父类方法时,访问权限必须大于或者等于父类该方法的权限(public>protec ted> 缺省)
② 重写的方法返回值类型,必须与被重写方法的返回值类型一样,或者范围更小
③ 私有方法、静态方法不能被重写,如果重写会报错的

package family;public class Test3 {public static void main(String[] args) {Student s = new Student("张三", '男', 40);System.out.println(s.toString()); //family.Student@3ac3fd8bSystem.out.println(s); //Student{name张三gender=男age=40}}
}class Student{private String name;private char gender;private int age;@Overridepublic String toString(){return "Student{name" + name + "gender=" + gender + "age=" + age + "}";}public Student() {}public Student(String name, char gender, int age) {this.name = name;this.gender = gender;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public char getGender() {return gender;}public void setGender(char gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

05 子类构造器的特点

子类的全部构造器,都会先调用父类的构造器,再调用自己的构造器。

在这里插入图片描述

注:super();为寻找父亲构造器,默认写在子类构造器第一行。

06 this() 调用兄弟构造器

//this调用兄弟构造器
public Student(String name, char sex, int age){this(name, sex, age, "黑马程序员");
}public Student(String name, char sex, int age, String school){this.name = name;this.sex = sex;this.age = age;this.school = school;
}

注:super(...)this(...)必须写在构造器的第一行,且二者不能同时出现。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词