当前位置: 首页 > news >正文

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(...)必须写在构造器的第一行,且二者不能同时出现。

http://www.xdnf.cn/news/106597.html

相关文章:

  • 数据结构与算法学习笔记(Acwing提高课)----动态规划·数字三角形
  • openssh-10.0p1用于修复CVE-2025-26465、CVE-2025-26466
  • java springBoot 整合 扣子cozeAI 智能体 对话
  • AI 人工智能模型:从理论到实践的深度解析⚡YQW · Studio ⚡【Deepseek】【Chat GPT】
  • python函数与模块
  • PyCharm 链接 Podman Desktop 的 podman-machine-default Linux 虚拟环境
  • YOLO学习笔记 | 从YOLOv5到YOLOv11:技术演进与核心改进
  • JVM学习笔记
  • Spark论述及其作用
  • 五、实现隐藏(Hiding the Implementation)
  • 记录一次OGG进程abended,报错OGG-01431、OGG-01003、OGG-01151、OGG-01296问题的处理
  • Windows 同步技术-一次性初始化
  • Discuz!与DeepSeek的AI融合:打造智能网址导航新体验——以“虎跃办公”为例
  • 15.FineReport动态展示需要的列
  • 运维案例:让服务器稳定运行,守护业务不掉线!
  • 块压缩与图片压缩优缺点对比
  • 高可靠性厚铜PCB生产的五大关键设备
  • leetcode刷题——判断对称二叉树(C语言版)
  • 知识链(Chain-of-Knowledge):通过对异构来源的动态知识适配实现大语言模型的知识落地
  • 数据通信学习笔记之OSPF的基础术语-距离矢量路由协议
  • 概率dp总结
  • 精准识别违规登录:Windows事件ID 4624全维度分析手册
  • 解决AWS中ELB的目标群组中出现不正常数
  • JAVA工程师面试题(一)
  • 在串的简单模式匹配中,当模式串位j与目标串位i比较时,两字符不相等,则i的位移方式是?
  • 快速生成安卓证书并打包生成安卓apk(保姆教程)
  • HCIP-OSPF综合实验
  • Linux网络编程 从集线器到交换机的网络通信全流程——基于Packet Tracer的深度实验
  • 第十篇:系统分析师第三遍——7、8章
  • Kubernetes服务自动注册Consul全攻略 - 基于consul-register的实践指南