java面向对象三大特性
封装
封装的作用:
1、对象的数据封装特性彻底消除了传统结构方法中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性,降低了程序员保持数据与操作内容的负担。 2、对象的数据封装特性还可以把对象的私有数据和公共数据分离开,保护了私有数据,减少了可能的模块间干扰,达到降低程序复杂性、提高可控性的目的。 原文链接:Java封装_深海潜蛟的博客-CSDN博客
通俗来说:设计一个类时,应该对成员变量的访问做出一些限定,不允许外界随意访问,这就需要实现类的封装。 类的封装,就是将类中的属性私有化,即用private关键字来修饰。私有属性只能在它所在的类中被访问。
如果外界想要访问私有属性,需要提供一些使用public修饰的公有方法。其中包括用于获取属性值的getXxx方法和设置属性值的setXxx方法 。
Java.类的封装(适合新手,通俗易懂,比较全面)_六神max的博客-CSDN博客_java类的封装举例
example
package OOB; public class Package_structure { public static void main(String[] args){ Person1 ps=new Person1(); ps.setAge(12); System.out.println(ps.getAge()); } } class Person1{ private int age; public void setAge(int a){ if(a>=1&&a<=1000){ age=a; }else { System.out.println("输入错误"); } } public int getAge(){ return age; } }
继承
特性
1、子类又被称为派生类; 父类又被称为超类(Super Class)
2、 子类即使不扩充父类,也能维持父类的操作
3、 Java之中只允许多层继承,不允许多重继承,Java存在单继承局限
4、 对于所有的非私有(no private)操作属于显式继承(可以直接利用对象操作),而所有的私有操作属于隐式继承(间接完成)
5、 在继承关系之中,如果要实例化子类对象,会默认先调用父类构造,为父类之中的属性初始化,之后再调用子类构造,为子类之中的属性初始化,即:默认情况下,子类会找到父类之中的无参构造方法
package OOB; //继承 public class Inherit { public static void main(String[] args){ Student11 ss=new Student11(); ss.setSchool("ll"); ss.setName("lw"); ss.setAge(16); System.out.println("我叫"+ss.getName()+" 今年"+ss.getAge()+" 来自"+ss.getSchool()); } } class Person{ private String Name; private int Age; public void setName(String name){ this.Name=name; } public void setAge(int age){ this.Age=age; } public String getName(){ return Name; } public int getAge(){ return Age; } } class Student11 extends Person{ private String School; public void setSchool(String school){ School=school; } public String getSchool(){ return School; } }
多态--Polymorphic
理解?
-
多态的前提1:是继承
-
多态的前提2:要有方法的重写
-
父类引用指向子类对象,如:Animal a = new Cat();
-
多态中,编译看左边,运行看右边
package OOB; public class Polymorphic_Class { public static void main(String[] args){ Cat ct=new Cat(); ct.eat(); Dog dg=new Dog(); dg.eat(); dg.run(); } } class Animal{ public void eat(){ System.out.println("吃啥都不挑"); } } class Cat extends Animal{ public void eat(){ System.out.println("猫吃鱼"); } } class Dog extends Animal{ public void eat(){ System.out.println("狗吃骨头"); } public void run(){ System.out.println("狗跑得快"); } }