Java继承-入门

继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。

1.语法格式

class Father{ //父类

}

class Son extends Father { //子类Son extends继承 父类Father

}

 


例如

class Teacher {  //声明一个父类 Teacher
	String name;
	int age;

	public void eat() {
		System.out.println("吃午饭");
	}
}

class Student extends Teacher {  //声明一个子类Student  用关键字extends 继承 父类Teacher

}

public class Task {
	public static void main(String[] args) {
		Student student = new Student();    //声明一个Student类的实例对象student
		student.name = "小明";
		student.age = 20;
		student.eat();
		System.out.println(student.name);
		System.out.println(student.age);
	}

}

运行结果为:

吃午饭
小明
20

注意

1.至少两个类,使用关键字extends以后  子类就继承了父类  就意味着子类可以使用父类的某些属性和方法

2.但是子类无法继承父类私有的属性和方法

3.构造方法 先执行父类的构造方法,在执行子类的构造方法,父类与子类的构造方法的形式保持一致。父类中有无参构造,子类也有无参构造。父类中没有无参构造,子类也没有无参构造方法。

2.重写

重写的目的: 子类可以继承父类非私有的方法,但有时候父类中的方法无法满足子类的需求,这个时候需要在子类中重写父类非私有的方法。

package com.qfedu.a_demo;

class Teacher {
	String name;
	int age;

	public void eat() {
		System.out.println("吃午饭");
	}
	public void hello() {
		System.out.println("Hello Java!");
	}
}

class Student extends Teacher {
   
	@Override       //@Override是重写的严格限定,只要有这个,就证明这个下面的方法是重写的
	public void eat() {
		System.out.println("吃海底捞");
	}
}

public class Task {
	public static void main(String[] args) {
		Student student = new Student();
		student.name = "小明";
		student.age = 20;
		student.eat();
		student.hello();
		System.out.println(student.name);
		System.out.println(student.age);
	}

}

运行结果

吃海底捞
Hello Java!
小明
20

注意:

1.必须有继承关系

2.父类的方法必须是非私有化的

3.在子类中重写父类的方法,这个方法除了方法体不一样其他都一样

4.必须在子类中重写

3.用set,get方法调用父类private私有成员

package com.qfedu.a_demo;

class Teacher {
	String name;
	private int age;  //声明一个私有的成员变量

	public int getAge() {   // get方法取值
		return age;
	}

	public void setAge(int age) {  //set方法赋值
		this.age = age;
	}

	public void eat() {
		System.out.println("吃午饭");
	}

	public void hello() {
		System.out.println("Hello Java!");
	}
}

class Student extends Teacher {

	@Override
	public void eat() {
		System.out.println("吃海底捞");
	}
}

public class Task {
	public static void main(String[] args) {
		Student student = new Student();
		student.name = "小明";
		// student.age = 20;
		student.eat();
		student.hello();
		student.setAge(21);  //set赋值
		System.out.println(student.name);
		//System.out.println(20);
		System.out.println(student.getAge());  //get取值
	}

}

运行结果为

吃海底捞
Hello Java!
小明
21

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值