面向对象的三大特性是什么喃?
1、封装
成员属性私有化,私有化后此属性只能在当前类调用它,要想调用私有化成员属性就要写get和set方法。
作用:1.能提高代码安全性,保护数据。
2.增加系统可维护行。
列如:
//定义一个群众类
public class People {
/** 私有化成员变量*/
//private String name;
/**私有化成员变量*/
//private String age;
private String name;
private int age;
//get方法表示取值方法
public String getName() {
return name;
}
//set表示赋值方法
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age= age;
}
}
//定义一个测试类
public class Test{
People p=new People();//系统提供的隐式无参构造方法
//p.No Default Proposals//当没有get和set方法时就会提示出No Default Proposals-用对象名就调用不到成员变量
p.setName="乐乐";//当要给成员变量赋值时就要调用它书写的set方法
}
2、继承
子类使用extends继承父类,子类继承父类的所有非私有公共的方法和属性,子类里面写子类特有的方法
当子类想要重新输出父类公共的方法就要重写父类方法。
列如:
/**定义一个父类*/
public class Plant{
String name;
public void grow(){
System.out.println(name+"快乐生长!");
}
}
/**定义一个子类继承它的父类*/
public class Apple extends Plant{
//重写父类的方法
public void grow(){
System.out.println(name+"疯狂爆长");
}
//子类特有的方法不能在父类里面写
public void fruit(){
System.out.println("结出又红又大的苹果");
}
}
3、多态
一种定义,多种实现,可以理解为用父类对象去装子类对象
Public class Person{
public void eat(){
System.out.println("人吃东西");
}
public void sleep(){
System.out.println("人睡觉");
}
}
public class Student extends Person{
public void eat(){ //重写eat()方法
System.out.println("学生吃东西");
}
public void walk(){ //子类特有方法
System.out.println("学生走路");
}
public static void main(String[] args){
Person s = new Student();
s.eat(); //调用子类重写方法
s.sleep(); //调用父类的方法
s.walk(); //错误!不可以调用子类特有的方法
//要想调用子类独有的方法就要强制转换
Student st=(Student)s;
st.walk//这样才能调用子类特有的方法
}
}
今天的分享就到此结束啦,有什么不懂可以评论区留言或者补充!!!