黑马程序员 继承

——- android培训java培训、期待与您交流! ———-

1,继承概述
把多个类中相同的内容或者功能给提取出来定义到一个类中,让继承的它的类都有这些内容或者功能。
体现

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

class NewPhone extends OldPhone
{
    public void send()
    {
        System.out.println("发信息");
    }
}

class PhoneDemo
{
    public static void main(String[] args) 
    {
        NewPhone p = new NewPhone();
        p.call();
        p.send();
    }
}

2,好处:
(1)提高代码的复用性;
(2)让类与类之间产生关系,有了这个关系,才有了多态的特性

3,注意:
(1)不要为了获取其他类的功能,简化代码而继承;必须是类与类之间有所属关系才可以继承。

(2)Java只支持单继承,不支持多继承。因为多继承容易带来安全隐患,当多个父类中定义了相同函数,但函数内容不同时,子类对象不确定要进行哪一个。但是java保留这种机制,并用另一种体现形式来完成表示,多实现。

(3)子类只能继承父类非私有的成员变量和成员方法,只能通过get()和set()方法或者用父类的带参构造访问

(4)当子类继承父类,沿袭了父类的功能,到子类中,但是子类虽具备该功能,但是功能的内容却和父类不一致,这时,没有必要定义新功能,而是使用覆盖特殊,保留父类的功能定义,并重写功能内容:
(a)父类中的私有方法不可以被重写
(b)子类方法访问权限一定要大于或等于父亲的方法权限
(c)静态的方法只能被静态方法重写

体现

//子类覆盖父类示例  
class Fu2  
{  
    void show()  
    {  
        System.out.println("show1");  
    }  
}  
class Zi2 extends Fu2  
{   //子类覆盖父类内容并拓展自身内容  
    void show()  
    {     
        System.out.println("show2");  
        System.out.println("show3");  
    }  
}  
class ExtendsDemo2    
{  
    public static void main(String[] args)   
    {  
        Zi2 z=new Zi2();  
        z.show();  
    }  
}  

4,this与super
This:
代表本类对象的引用
Super:
代表父类的内存空间的标识(可以理解为父类的对象引用)
当子父类出现同名时,使用super
注意:
(a)子类的所有的构造函数,默认都会访问父类中空参数的构造函数,因为子类中每一个构造函数的第一行都有一句隐式语句super()
(b)当父类中没有空参数的构造函数时,子类必须手动通过super语句形式来指定要访问父类中的构造函数。当然,子类的构造函数第一行也可以手动指定this语句访问本类中的构造函数
体现

//子父类中的构造函数示例  
class FuStudent  
{     
    private String name;  
    FuStudent()  
    {  
        System.out.println("学习");  
    }  
    FuStudent(String name)  
    {  
        this.name=name;  
        System.out.println("name="+this.name);  
    }  
}  
class ZiStudent extends FuStudent  
{     
    ZiStudent()  
    {   //super();  
        System.out.println("运动");      
    }  
    ZiStudent(String name)  
    {  
        super(name);  
    }  
}  
class ExtendsDemo3    
{  
    public static void main(String[] args)   
    {  
        ZiStudent z=new ZiStudent();  
        ZiStudent z2=new ZiStudent("李四");  
    }  
}  

5,final关键字
(a)是最终的意思,它可以修饰类,修饰成员方法,成员变量
(b)它修饰的成员方法,是不可以被子类重写的
(c)它修饰的类不能被继承
(d)它修饰的成员变量,其实是一个常量,规范全大写,单词间由”_”连接
(e)内部类只能访问final修饰的局部变量

——- android培训java培训、期待与您交流! ———-

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值