继承 封装 多态
封装
封装的本质就是让类的调用者不必太多的了解类的实现者是如何实现类的, 知道如何使用类就行。
private实现封装
被 private 修饰的成员变量或者成员方法, 不能被类的调用者使用。
- 属性一般都是私有(private)的,只能在类内部进行访问和初始化。在外部初始化的方法如下:
1.提供一系列get和set方法:(pubic 的)
class Person {
private String name;
private int age;
public void setName(String myName) {
name = myName;
}
public String getName() {
return name;
}
public void setAge(int myAge) {
age = myAge;
}
public int getAge() {
return age;
}
}
public class Test1 {
public static void main(String[] args) {
Person person = new Person();
person.setName("hjy");
System.out.println(person.getName());
person.setAge(20);
System.out.println(person.getAge());
}
}
//执行结果:
hjy
20
快捷键:alt + insert 自动生成所有方法
2.构造函数:(方法名和类名一样,没有返回值)
如果在实现类的时候,没有写构造方法,那么编译器会自动生成一个不带有参数的构造方法;如果写了一个不带有参数的构造方法,那么编译器将不会为你自动生成不带有参数的构造方法。
- 作用:构造一个对象 / 实例化一个对象
- 步骤: 为对象分配内存 → 调用合适的构造方法
class Person {
private String name;//实例成员变量
private int age;
private String sex;
//默认构造函数 构造对象
public Person() {
this.name = "caocao";
this.age = 10;
this.sex = "男";
}
//带有3个参数的构造函数
public Person(String name,int age,String sex) {
this.name = name;
this.age = age;
this.sex = sex; }
public void show(){
System.out.println("name: "+name+" age: "+age+" sex: "+sex);
}
}
public class Main{
public static void main(String[] args) {
Person p1 = new Person();//调用不带参数的构造函数 如果程序没有提供会调用不带参数的构造函数
p1.show();
Person p2 = new Person("zhangfei",80,"男");//调用带有3个参数的构造函数
p2.show();
}
}
// 执行结果
name: caocao age: 10 sex: 男
name: zhangfei age: 80 sex: 男
- this 代表什么?
当前对象的引用,不代表当前对象。且静态方法类不能使用 this ,通过this去调用其他构造方法,必须放到类内第一行。 - this 的用法:this.成员方法(实例成员方法和变量) ;this.成员变量; this( ) →调用含有一个参数的构造方法;
- 注意:构造方法可以是私有的,也可发生重载。
public Person(){
public Person(String name){
public Person(String name,int age){