一、包
1、包的三大作用
(1)区分相同名字的类 (2)当类很多时,可以很好的管理类 (3)控制访问范围
2、包的基本语法
例:package com.hspedu;
说明:1、package 关键字,表示打包 2、com.hspedu 表示包名
3、包的本质
包的本质实际上就是创建不同的文件夹/目录来保存类文件
4、包的命名即规范
5、包的注意事项和细节
二、访问修饰符
1、基本介绍
注:必背
注:只有默认和public才能修饰类
这里的子类指的是不同包下的子类
三、封装encapsulation(重点!!!)
1、介绍
2、封装的实现步骤
练习题:
设计一个小程序,不能随便查看人的年龄、工资等隐私,并对设置的年龄进行合理的验证。年龄合理就设置,否则给默认年龄必须在0--120之间,年龄、工资不能直接查看,name的长度在2-6个字符之间
public class Encapsulation01 {
public static void main(String[] args) {
Person person = new Person();
person.setName("jack");
person.setAge(30);
person.setSalary(30000);
System.out.println(person.info());
System.out.println(person.getSalary());
System.out.println(person.getAge());
}
}
/*
设计一个小程序,不能随便查看人的年龄、工资等隐私,并对设置的年龄进行合理的验证。年龄合理就设置,否则给默认
年龄必须在0--120之间,年龄、工资不能直接查看,name的长度在2-6个字符之间
*/
class Person {
// 名字公开
public String name;
// 年龄不公开
private int age;
// 工资不公开
private double salary;
public void setName(String name) {
//加入数据校验
if (name.length() >= 2 && name.length() <= 6) {
this.name = name;
} else {
System.out.println("名字长度不对");
}
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
// 判断
if (age >= 1 && age <= 120) {
this.age = age;
} else {
System.out.println("年龄需要在0到120");
//给一个默认年龄
this.age = 18;
}
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
// 写一个方法返回属性信息
public String info() {
return "信息为 name=" + name + " age=" + age + " salary=" + salary;
}
}
3、封装与构造器
//无参构造器
public Account() {
}
//有参构造器
public Account(String name, double balance, String password) {
this.setName(name);
this.setPassword(password);
this.setBalance(balance);
}
四、继承(重点!!!)
1、继承基本介绍和示意图
2、继承的基本语法
3、继承的使用细节
(1)子类继承了所有的属性和方法,非私有的属性和方法可以在子类中直接访问,但是私有属性和方法不能在子类中直接访问,要通过父类公共的方法去访问
(2)子类必须调用父类的构造器,完成父类的初始化
(3)当创建子类对象时,不管使用子类的哪个构造器,默认情况下总会去调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用 super 去指定使用父类的哪个构造器完成对父类的初始化工作,否则编译不会通过。
(4)如果希望指定去调用父类的某个构造器,则显式的调用一下:super(参数列表)
(5)super 在使用时,必须放在构造器的第一行(super只能在构造器中使用)
(6)super() 和 this() 都只能放在构造器的第一行,因此这两个方法不能共存在一个构造器
(7)java 所有类都是Object类的子类,Object是所有类的父类
(8)父类构造器的调用不限于直接父类!将一直往上追溯直到Object类(顶级父类)
(9)子类最多只能继承一个父类(指直接继承),即java中是单继承机制(如果想让A类继承B类和C类,可以让A先继承B,再让B继承C)
(10)不能滥用继承,子类和父类之间必须满足is-a关系