继承

本文详细介绍了面向对象编程中的封装和继承概念。封装是将数据和方法封装在类中,通过getter和setter等方法保护数据安全。继承则允许子类继承父类的属性和方法,实现代码复用。子类可以扩展父类的功能,同时一个类只能继承一个父类,体现了继承的单一性。虽然父类的private方法不能被继承,但子类可以通过公共方法间接访问。继承为多态提供了基础,并有助于减少代码冗余。
摘要由CSDN通过智能技术生成
关于封装
在面向对象编程中 , 封装是将对象运行所需的资源封装在程序对象中 。
数据被保存在内部 ,程序的其他部分只有通过被授权的操作(成员方法)才能对数据进行操作
在面向对象体系中 ,通过包来吧多个类收集在一起成为一组 ,包也是一种封装机制
用来有序组织类和接口
	类就是一种封装。以前学习C,数据和方法都是暴露在外面的。C也有封装,比如结构体。其实结构体就是类的原型。
	类是一种封装,它将这一类事物的共有的属性和方法封装在一起。
	封装确保了数据的安全,使得数据更加私密。使用者不需要直接操作数据,只要使用开发者提供的界面(接口)就可以了。
我们在写javabean的时候,见过封装。比如get、set方法(getter and setter)。比如overload,只给用户提供一个方法,和传入方法参数的规范,用户就可以操作。:

继承

继承,
继承是面向对象程序设计的一个重要特性 
类的继承就是以原有类为基础创建新类,实现代码复用
public class Father {
    private int age;
    private String name;
    public void sleep(){
        System.out.println("wuwuwu");
    }
    public void eat(){
        System.out.println("bajibaji");
    }
    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }
}
----------------------------------------------
public class Son extends Father
{

}
---------------------------------------------------
public class this01 {
    public static void main(String[] args){
        Son s = new Son();
        s.eat();
        s.sleep();
        s.setName("好大儿");
        System.out.println(s.getName());
    }
}
--------------------------------------------------------
bajibaji
wuwuwu
好大儿
使用继承后 ,解决了代码的冗余
子类可以继承父类的属性还有方法
        继承了成员属性
		继承了成员方法(不包括被private修饰的)
		也继承了静态方法(不包括被private修饰的)
		
		父类中private修饰的方法是父类独有的,不会被继承。
		父类私有的方法,子类无法继承。但是父类私有的成员属性,
		子类是继承了的。只不过换了种方式去访问。通过公开的方法区访问。
		
		继承中的一个关系问题:
		父类的引用指向子类的对象:这是可以的
		子类的引用指向父类的对象:这是不可以的
public class Animal {
    public Animal(){
        System.out.println("父类有参");
    }
    protected void pro(){
        System.out.println("是否继承proteced");
    }
    private void pri(){
        System.out.println("是否继承private");
    }

}
 class Dog extends Animal {

     public Dog(){

     }
    public Dog(String name,String type){
         Dog d = new Dog();
         d.pro();
         d.pri();
        System.out.println("子类有参");
    }
}
 class this01 {
    public static void main(String[] args){
        new Dog("wuhu","qifei");
    }
}
-------------------------------------------
java: 找不到符号
  符号:   方法 pri()
  位置: 类型为com.company.Dog的变量 d
	构造方法被继承了吗?
	假如构造方法被继承了。
	那么如果在父类中有一个无参数的构造方法,在子类中没有无参数的构造方法,是可以构造子类对象的。
	如果父类的构造方法被子类继承了,那么就可以实现子类的引用指向父类的对象。
	因此构造方法并没有被继承。

进一步了解继承

子类继承父类,拥有父类的属性和方法(private修饰的)private的属性子类无法直接访问,但可以通过方法父类提供的方法间接的访问。

父类的能力是有限的,子类拥有了父类的一些方法和属性之后,还可能满足不了需求。
因此可以在子类中定义具有自己属性和方法
(记住)一个父类可以有很多子类,但是一个子类只能有一个父类。java中不能多继承,只能继承一个父类。
		如果一个类没有通过extends继承任何类,那么这个类就被默认为继承Object类 ,它是所有类的根 ,是包java.lang 中的类;
		继承是可以传递的,可以从A继承B继承C继承D,这样是可以的。
		A extends B {}
		B extends C {}
		C extends D {}
		D的级别是最高得
		C拥有D的属性、方法(private),
		B拥有C和D的属性和方法(private)
		A拥有BCD的属性、方法(private)。
		我们看得出来:子类的能力要比父类强大。父类一旦被定义,子类一旦继承,父类除了private的方法之外,其他的基本上被子类所有。
		继承这种机制,父类其实是一个抽象,是子类共性的集合。或者是说父类是子类共有属性和方法的一个集合。是子类共有属性、方法的模板。
		有了继承之后,好处很多,比如减少代码的冗余。但这不是最主要的功能。
		最最重要的功能是为多态提供了实现的可能。
————————————————
版权声明:本文为CSDN博主「solo_jie」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/solo_jie/article/details/113121208
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值