关于封装
在面向对象编程中 , 封装是将对象运行所需的资源封装在程序对象中 。
数据被保存在内部 ,程序的其他部分只有通过被授权的操作(成员方法)才能对数据进行操作
在面向对象体系中 ,通过包来吧多个类收集在一起成为一组 ,包也是一种封装机制
用来有序组织类和接口
类就是一种封装。以前学习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