文章目录
面向对象语言三大特征
封装,继承,多态
封装
概念:将类的某些信息隐藏在类内部(权限),不允许外部程序直接访问,而是通过该类提供的特定方法访问。
好处:
- 隐藏类的实现细节
- 只能通过规定方法访问
- 方便修改实现
- 方便加入控制语句
具体表现
属性使用private权限
方法使用public权限
不让他直接对属性操作,而是提供了一些方法访问
Person类属性私有,方法(set/get)/构造方法/成员方法
Person:
package fengzhuang;
import day2.demo1.Student;
public class Person {
private String name;
private int age;
private static Person person=null;
public void setName(String n){
//不让他直接对属性操作,而是提供了一些方法访问
if(n!=null||n.length()<10){
//name的话会空指针异常
name=n;
}
}
public String getName(){
return name;
}
public void setAge(int a){
if(a>=0&&age<120){
age=a;
}
}
public int getAge(){
return age;
}
//构造方法,方法名与类名相同。私有后,在外面new不了
/*private Person(){
}
public Person(int n,String na){
age=n;
name=na;
}*/
//成员方法,方法名与类名不同 [单例模式]
/*public static Person getPerson(){
if(person==null){ //第一次为null
//Person person=new Person()
person=new Person();
}
return person;
}*/
}
TestPerson:
package fengzhuang;
public class TestPerson {
public static void main(String[] args) {
Person p1=new Person();
/*p1.name="huhlbih";
p1.age=121344;*/
p1.setName("sssa");
p1.setAge(18);
System.out.println(p1.getName());
System.out.println(p1.getAge());
//设计模式,在一个程序中只让他创建一次对象,只能通过特点方法访问
/*System.out.println(Person.getPerson());*/
}
}
this
this关键字代表自身类的对象
使用this关键字引用成员变量 使用this关键字引用成员方法
作用:显示的调用成员变量,成员方法
● 注意:this关键字必须放在非静态方法里面
(因为静态方法先加载,this对象还没有创建)
ThisPerson.class:
package fengzhuang;
public class ThisPerson {
private String name;
private int age;
private static Person person=null;
//对象还没出来用static this.name会报错
/*public static void setName(String name){
//this表示当前操作的对象 thisperson
if(name!=null){
this.name=name;
}
}*/
public void setName(String name){
//this表示当前操作的对象 thisperson
if(name!=null){
this.name=name;
}
}
public String getName(){
return name;
}
public void setAge(int age){
if(age>=0&&age<120){
this.age=age;
}
}
public int getAge(){
return age;
}
}
TestPerson.class:
package fengzhuang;
public class TestPerson {
public static void main(String[] args) {
Person p1=new Person(