Java程序基础——继承

目录

一、继承的概念

二、继承的格式

三、继承的好处

四、继承的注意事项:

1、在java中,类只支持单继承,不允许多继承

2、多个类可以同时继承一个父类

3、在Java中,可以多层继承

4、在Java中,子类和父类是一个相对的概念,即一个类可以是某一个类的父类,也可以是另一个类的子类

五、继承中,子类父类中成员变量的特点

六、子类父类中成员方法的特点

七、方法重写的注意事项


一、继承的概念

父类:现有类

子类:基于现有类构建出的一个新的类,子类会自动拥有父类的所有可继承的属性和方法

二、继承的格式

extends关键字

格式:

    class 子类  extends 父类 { }

案例:

/*
* 定义员工类Employee
*/
class Employee {
String name; // 定义name属性
// 定义员工的工作方法
public void work() {
System.out.println("尽心尽力地工作");
}
}
/*
* 定义研发部员工类Developer 继承 员工类Employee
*/
class Developer extends Employee {
// 定义一个打印name的方法
public void printName() {
System.out.println("name=" + name);
}
}
/*
* 定义测试类
*/
public class Demo {
public static void main(String[] args) {
Developer d = new Developer(); // 创建一个研发部员工
类对象
d.name = "小明"; // 为该员工类的name属性进行赋值
d.printName(); // 调用该员工的printName()方法
d.work(); // 调用Developer类继承来的work()方法
}
}

总结:通过子类对象既可以调用自身的非private修饰的成员,也可以调用父类的非private 修饰的成员。

三、继承的好处

  • 提高代码的复用性,提高开发效率
  • 让类与类之间产生了关系,为多态提供了前提

四、继承的注意事项:

1、在java中,类只支持单继承,不允许多继承

class A {}
class B extends A {}
class c extends A,B {}   // 不可以同时继承A类B类

2、多个类可以同时继承一个父类

class A {}
class B extends A {}
class c extends A {}  

3、在Java中,可以多层继承

class A {}
class B extends A {}    //B是A的子类
class c extends B {}   // C是B的子类,也是A的子类

4、在Java中,子类和父类是一个相对的概念,即一个类可以是某一个类的父类,也可以是另一个类的子类

五、继承中,子类父类中成员变量的特点

成员变量:如果子类父类中出现不同名的成员变量,这时的访问是没有任何问题。 看如下代码:

class Fu
{
//Fu中的成员变量。
int num = 5;
}
class Zi extends Fu
{
//Zi中的成员变量
int num2 = 6;
//Zi中的成员方法
public void show()
{
//访问父类中的num
System.out.println("Fu num="+num);
//访问子类中的num2
System.out.println("Zi num2="+num2);
}
}
class Demo
{
public static void main(String[] args)
{
Zi z = new Zi(); //创建子类对象
z.show(); //调用子类中的show方法
}
}

代码说明:Fu类中的成员变量是非私有的,子类中可以直接访问,若Fu类中的成 员变量私有了,子类是不能直接访问的。

  • 当子类和父类中出现了同名的成员变量时,在子类中要访问父类的成员变量,需要使用关键字super来完成。
// 在子类中,访问父类中的成员变量格式:
super.父类中的成员变量
class Fu
{
//Fu中的成员变量。
int num = 5;
}
class Zi extends Fu
{
//Zi中的成员变量
int num = 6;
void show()
{
//子父类中出现了同名的成员变量时
//在子类中需要访问父类中非私有成员变量时,需要使用super关键
字
//访问父类中的num
System.out.println("Fu num="+super.num);
//访问子类中的num2
System.out.println("Zi num2="+this.num);
}
}
class Demo
{
public static void main(String[] args)
{
Zi z = new Zi(); //创建子类对象
z.show(); //调用子类中的show方法
}
}

 六、子类父类中成员方法的特点

  • 当程序通过调用方法时,会先在子类中查找有没有对应的方法,若子类中有,则先执行子类中的方法;若子类中不存在,则不执行父类中相应的方法。
public class Parent{
    int num = 5;
}

public class Children extends Parent{
    int num2 = 10;
    public void  show(){
        System.out.println("子类中的show方法执行");
    }
    public void  show2(){
        System.out.println("子类中的show2方法执行");
    }
}

public class Test {
    public static void main(String[] args) {
        Children children = new Children();
        children.show();
        children.show2();
    }
}
  • 当子类中和父类中的方法一摸一样时,会出现覆盖情况(即重写)
public class Parent{
    int num = 5;
    public void  show(){
        System.out.println("父类中的show方法执行");
    }
}

public class Children extends Parent{
    int num = 10;
    public void  show(){
        System.out.println("子类中的show方法执行");
    }
}

public class Test {
    public static void main(String[] args) {
        Children children = new Children();
        children.show();
    }
}
  • 方法重写的应用

当子类需要父类的功能,而功能主体子类有自己特有的内容时,可以重写父类方法。这样既延续了父类的功能,又定义了子类特有的内容。

比如:手机,当描述一个手机时,它具有打电话、发短信、显示来电的功能;  后来的手机,显示来电时需要增加头像、姓名,这是就可以使用重写来完成

public class Phone {
    public void sendMessage(){
        System.out.println("发短信");
    }

    public void call(){
        System.out.println("打电话");
    }

    public void showcall(){
        System.out.println("显示来电");
    }
}

public class NewPhone extends Phone{
   public void showcall(){
        super.showcall();
        System.out.println("显示头像");
        System.out.println("显示姓名");
   }
}

七、方法重写的注意事项

  • 子类覆盖父类方法,必须保证权限大于等于父类权限

    class Fu{
       void show(){}
       public void method(){}
    }
    
    class Zi extends Fu{
       public void show(){}   // 可以执行
       void method(){}        // 编译错误
    }
  • 必须一摸一样:方法的返回类型 ,方法名,参数列表  都必须一样

 总结:当一个类是另一个类中的一种时,可以通过继承,来继承属性和功能,当子类中需要特殊定义父类中的功能内容时,可以进行方法重写

总结:

  • 继承中成员变量(或方法)关系:
  • 不同命的变量(或方法):子类直接继承使用
  • 同名的变量(或方法):默认访问的子类自己的成员变量(或方法),如果要访问父类  中的同名变量(或方法),要使用super.成员变量名 (或方法)
  • super:表示的是当前对象中包含的父类对象空间的引用
  • 方法重写的注意事项:
  1. 子类的方法声明要与父类相同
  2. 子类中重写的方法,访问权限不能低于父类
  3. 父类的私有方法不能被子类重写
  • 方法重载: 在同一个类中,多个方法名相同,他们的参数列表不同(个数、数据类型不同)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值