java面向对象有三大特征
- 封装
- 继承
- 多态
封装
- 封装就是将某些东西包装在一起,然后以新的完整形式呈现出来,隐藏属性、方法或实现细节的处理方式,也就是有选择性的公开或隐藏某些信息,解决了数据的安全性。
- 封装可以分为封装数据和封装业务,封装业务指的是在类中定义方法,在方法中完成整个业务逻辑。封装数据指将属性私有化,然后提供get(读数据)和set(写数据)方法。
以代码的形式解释一下
public class Person {
private String name;//定义为私有成员变量,防止其他类修改
private int age;
private String sex;
public Person(String name,int age,String sex){
this.name=name;
this.age=age;
this.sex=sex;
}
public void setName(String n){
name=n;
}
public String getName(){
return name;
}
public void setAge(int a){
if(a>0&&a<=120){
age=a;
}
else{
System.out.println("年龄数据非法,默认年龄18");
age=18;
}
}
public int getAge(){
return age;
}
public void setSex(String s){
sex=s;
}
public String getSex(){
return sex;
}
public void show(){
System.out.println(name+age+sex);
}
}
/**主方法*/
public class Test {
public static void main(String[] args){
Person p=new Person();
p.setName("qq");
p.setAge(140);//当年龄超出范围时,就会报错
p.setSex("女");
System.out.println(p.getName());
p.show();
}
}
继承
子类继承父类的特征和行为,继承只能单向继承,且只能有一个父类
/**父类*/
public class parentClass {
public parentClass(){
System.out.println("父类的构造方法");
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void show(){
System.out.println(name);
}
}
/**子类*/
public class child extends parentClass {
public child(){
System.out.println("子类的构造方法");
}
}
多态
多态是一种事物的多种形态,一个方法可以被重载,子类可以重写父类的方法,都体现了多态的思想。
在学习多态需要知道两个概念,重写和重载
重载:重载就是在同一个类当中有多个名称相同方法,但各个相同方法的参数列表不同(无关返回值类型)。编译器会根据调用时传递的实际参数自动判断具体调用哪个重载方法。
重写:重写则发生在不同的类当中,并且两者要有继承关系,重写是方法名字和参数的列表是要完全一致的,重写的意义在于父类的方法已经不能满足时,子类重写为自己需要的方法,例如宠物类定义了一个看病的方法,而猫和狗看病的方法都不同,所以他们要重新定义自己的方法
小猫定义了自己看病的方法
小狗也定义了自己看病的方法
而多态指的是父类类型的引用指向子类的对象
父类提供了方法的可见性,而子类才是具体实现方法的类