java回顾第二章
继承
1.继承的概念:子类继承父类子类就自动拥有父类非私有的成员变量

2.继承的格式
注意:只能继承非私有的变量和方法
继承后的特点--------成员变量
注意:成员方法跟成员变量一样也是该情况
方法重写(Override)
子类重写父类方法的注意事项:
1. 子类方法覆盖(重写)父类方法,必须要保证权限大于等于父类权限。
四大权限修饰符:
public:公共的
protected:受保护的
:默认的,不写就是默认的
private:私有的
2. 子类方法覆盖(重写)父类方法,返回值类型、函数名和参数列表都要一模一样。
3. 私有方法不能被重写(父类私有成员子类是不能继承的)
继承后的特点-----构造方法
子父类内存图解

上图结果:Fu类的构造方法!10 Zi类的构造方法!1
1.继承的概念:子类继承父类子类就自动拥有父类非私有的成员变量

2.继承的格式
/**
* 定义父类:
*/
public class Employee{
//定义属性
String name;
int age;
//定义方法
public void work(){
System.out.println("呕心沥血的工作!");
}
}
/*
定义工人类:工人是公司员工的一种,所以可以继承员工类
什么时候使用继承:我是你的一种的时候(is...a)
继承的格式:
public class 子类 extends 父类{}
子类:Worker
父类:Employee
继承的特点(重点):
子类继承父类,子类就会用用父类非私有的成员变量和成员方法
在子类中可以定义子类特有的成员
*/
public class Worker extends Employee{
//定义子类特有的打印姓名和年龄的方法
public void show(){
System.out.println(name+"\t"+age);
}
}
/*
定义监工类,是公司员工的一种,所以可以继承员工类
*/
public Classs Overseer extends Employee{
}
/*
测试继承:
测试子类继承父类之后,是否会自动拥有父类非私有的成员
继承的好处:
1.可以提高代码的复用性(重复使用)
2.继承使类与类之间产生了关系,是多态的前提
*/
public class DemoExtends {
public static void main(String[] args) {
//创建子类Worker 对象
Worker t = new Worker ();
//使用子类继承自父类的成员变量
t.name = "小白龙";
t.age = 18;
//使用子类继承自父类的成员方法
t.work();
//使用子类自己特有的成员
t.show();
//创建子类Overseer 对象
Overseer br = new Overseer ();
//使用子类继承自父类的成员变量
br.name = "仝大美女";
br.age = 18;
//使用子类继承自父类的成员方法
br.work();
}
}
注意:只能继承非私有的变量和方法
继承后的特点--------成员变量
public class Fu {
int a= 10;
}
public class Zi2 extends Fu {
int a = 100;
int b = 200;
}
/*
继承后的特点—成员变量:
1.子类有使用子类自己的成员变量
2.子类没有使用子类继承自父类的成员变量
3.子类和父类都没有,编译报错
*/
public class Demo01Variable {
public static void main(String[] args) {
//创建子类对象
Zi1 zi1 = new Zi1();
System.out.println(zi1.a);//10 子类继承自父类的
System.out.println(zi1.b);//20 使用子类自己的
//创建子类对象
Zi2 zi2 = new Zi2();
System.out.println(zi2.a);//100 使用子类自己的
System.out.println(zi2.b);//200 使用子类自己的
//System.out.println(zi2.c);//Cannot resolve symbol 'c' 子类父类都没有编译报错
}
}
注意:成员方法跟成员变量一样也是该情况
方法重写(Override)
public classFu{
public void show01(){
System,out,println("Fu类的show01方法");
}
}
/**
*方法重写:发生在两个类之间,在子类出现了和父类一模一样的方法,方法叫做重写(Override)
* 一模一样:
* 1,方法名一样
* 2,参数列表一样
* 3,返回值类型一样
* 4,修饰符一样(子类修饰的权限符要大于等于父类修饰的权限符)
* 注解:
* @override:检测是否为重写的方法
*
* 方法重载:发生在一个类当中,在一个类中方法名相同,参数列表不同(Overload)
*
*/
public class Zi extends Fu{
@Override
public viod show01(){
System.out.println("子类重写父类方法");
}
public void show01(int a){
System.out.println("子类自己特有的带参show01重载方法"+a);
}
}
public class DemoOverride{
public static void main(String[] args){
创建对象
Zi zi = new Zi();
zi.show01(); //调用的是子类重写的父类方法
zi.show01(10);
}
}
子类重写父类方法的注意事项:
1. 子类方法覆盖(重写)父类方法,必须要保证权限大于等于父类权限。
四大权限修饰符:
public:公共的
protected:受保护的
:默认的,不写就是默认的
private:私有的
2. 子类方法覆盖(重写)父类方法,返回值类型、函数名和参数列表都要一模一样。
3. 私有方法不能被重写(父类私有成员子类是不能继承的)
public class Fu {
protected void show01(){
System.out.println("Fu类的show01方法!");
}
void show02(){
System.out.println("Fu类的show02方法!");
}
public void show03(){
System.out.println("Fu类的show03方法!");
}
public void show04(String a){
System.out.println("Fu类的show04方法!");
}
private void show05(String a){
System.out.println("Fu类的show05方法!");
}
}
public class Zi extends Fu {
protected void show01(){
System.out.println("Zi类重写Fu类的show01方法!");
}
public void show02(){
System.out.println("Zi类重写Fu类的show02方法!");
}
//子类重写父类的方法,必须保证修饰符大于等于父类
/*void show03(){
System.out.println("Zi类重写Fu类的show03方法!");
}*/
//子类方法的参数和父类不一样,就不是方法重写
/*@Override
public void show04(){
System.out.println("Fu类的show04方法!");
}*/
//Method does not override method from its superclass 私有方法不能重写
//就相当于在子类中定义了一个自己特有的方法,恰好和父类名字是一样的
/*@Override
private void show05(String a){
System.out.println("Zi类的show05方法!");
}*/
}
继承后的特点-----构造方法
public class Fu{
int a = 10;
public Fu(){
System.out.println("Fu类的空参构造方法!"+a);
}
}
public class Zi extends Fu{
/*
Fu类的空参构造方法!10
Zi类的空参构造方法!10
在子类的构造方法中的第一行有一个默认的,super();作用是调用父类的空参构造方法
子类想要使用继承自父类的内容(成员变量、成员方法)必须先把父类加载到内存中,这样子类才可以使用
*/
public Zi(){
super();
System.out.println("Zi类的空参构造方法!"+a);
}
}
子父类内存图解

上图结果:Fu类的构造方法!10 Zi类的构造方法!1
...全文
相关推荐
java第二章语言基础(课件、开发的软件及其源码)
它包含了课件、开发软件以及源码,这是一套全面的学习资料,适合初学者和有一定经验的开发者回顾巩固。首先,让我们深入探讨Java语言的基础知识。
JAVA 2 捷径教程 第二章 代码2
在“JAVA 2 捷径教程 第二章 代码2”中,我们主要探讨的是Java编程语言的基础和进阶概念,尤其是与第二章相关的代码示例。
清华大学课程_java程序设计_郑莉_第一二章作业
考虑到现代Web开发已较少使用applet,这可能是对Java历史和技术演进的学习,或者是教授对于经典技术的回顾。
JAVA基础复习资料
**第二章:环境配置** 学习如何安装JDK(Java Development Kit),配置环境变量,以及使用Java编译器(javac)和解释器(java)。3.
JAVA 实用教程 耿祥义 课后编程题答案
的输出,标志着我们成功编写并运行了第一个Java程序。进入第二章,我们开始学习更复杂的数据类型和操作。


