50,504
社区成员
发帖
与我相关
我的任务
分享
/**
* 定义父类:
*/
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' 子类父类都没有编译报错
}
}
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);
}
}
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);
}
}