目录
面向对象三大特征
- 封装 :定义一个函数;private 等
- 继承
- 多态
类-private
定义Person类
public class Person {
String name; //普通成员变量
private int age; //private使私有化,类之外无法直接访问
public void show(Person person) {
System.out.println(person.name + " is " + person.age + " years old.");
}
public void setAge(int num) { //private必须与setXxx和getXxx配套出现
if (num <= 10) {
System.out.println("Sorry,your date entered incorrectly, please re-enter.");
} else {
age = num;
}
}
public int getAge() { //当为boolean类型时,用isXxx方法
return age;
}
public void thisMethod(int age){ //重名时用this访问成员变量
System.out.println(age+ " older than "+ age+ "."); //两个age都是输入的参数
System.out.println(this.age+ " older than "+ age+ "."); //谁调用this,this就指向
//哪个地址
}
}
创建Person实例并调用
//import 包名称.类名称 同一包下无须导包
public class PrivateDemo{
public static void main(String[] args) {
Person hacker = new Person(); //创建两个实例
Person defender = new Person();
hacker.name = "haker"; //直接访问成员变量name
//hacker.age = 20; 错误,hacker.age无法访问到成员变量age
hacker.setAge(6); //见Person类中setAge方法
//System.out.println(hacker.age); 错误,hacker.age无法访问
defender.name = "defender";
defender.setAge(20);
System.out.println("==============")
System.out.println(hacker.getAge());
hacker.show(hacker);
defender.show(defender);
System.out.println("==============");
defender.thisMethod(18); //this的用法,见Person中thisMethod方法
}
}
output:
Sorry,your date entered incorrectly, please re-enter.
==============
0 //赋值失败,仍为默认值0
haker is 0 years old.
defender is 20 years old.
==============
18 older than 18.
20 older than 18.
类-构造方法
之前 Student stu = new Student(); 中new其实就是调用了(没写构造方法时才)赠送的一个无参构造方法
定义Student类
public class Student {
String name;
int age;
public Student(){ //无参构造;注意不写返回值类型
}
public Student(String name,int age){ //全参构造;参数包括每一个成员变量
this.name = name; //本质是构造方法的重载
this.age = age;
}
public void method(){
System.out.println(name+ " can eat.");
}
}
创建实例
public class CreateDemo {
public static void main(String[] args) {
Student hacker = new Student();
Student defender = new Student("defender", 20); //全参构造
hacker.name = "hacker";
hacker.age = 20;
hacker.method();
defender.method();
}
}
output:
hacker can eat.
defender can eat.
标准类
- 每一个成员变量前都有private
- 每个成员变量有一套setter&&getter
- 有一个无参构造
- 有一个全参构造