权限修饰符
不同权限的访问能力
public | protected | default | private | |
---|---|---|---|---|
同类 | yes | yes | yes | yes |
同包不同类 | yes | yes | yes | no |
不同包子父类 | yes | yes | no | no |
不同包非子父类 | yes | no | no | no |
使用
1.属性:用private(封装思想)
2.成员方法public (便于调用)
3.构造public(便于new对象)
final关键字
1.final修饰类
public final class 类名{}
2.特点:
被final修饰的类不能被继承
public final class Animal{
}
public class Dog extends Animal{
}
extends Animal 报错
2.final修饰方法
修饰符 final 返回值类型 方法名(形参){
方法体;
return 结果;
}
2.特点:
被final修饰的方法,不能被重写
3.注意:
final和abstract不能同时修饰一个方法(final不能重写,abstract必须重写)
3.final修饰局部变量
final 数据类型 局部变量名 = 值;
2.特点:
被final修饰的变量不能二次赋值
public class Test01 {
public static void main(String[] args) {
final int i = 10;
//i = 20; 被final修饰的变量不能二次赋值
final int j;
j = 100;
//j = 200;
}
}
4.final修饰对象
final 类型 对象名 = new 对象();
2.特点:
被final修饰的对象,地址值不能改变,但是对象中的属性值可以改变
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Test02 {
public static void main(String[] args) {
//Person p1 = new Person("金莲",26);
//System.out.println(p1);//地址值
//p1 = new Person("涛哥",18);
//System.out.println(p1);//地址值
final Person p1 = new Person("金莲",26);
System.out.println(p1);//地址值
//p1 = new Person("涛哥",18);
//System.out.println(p1);//地址值
p1.setName("大郎");
p1.setAge(30);
System.out.println(p1.getName()+"..."+p1.getAge());
}
}
5.final修饰成员变量
final 数据类型 成员变量名 = 值;
2.特点:
a.需要手动赋值
b.不能二次赋值
public class Student {
final String name = "广坤";
public Student() {
}
//有参构造现在属于二次赋值了
/*public Student(String name) {
this.name = name;
}*/
public String getName() {
return name;
}
//set方法现在属于二次赋值了
/*public void setName(String name) {
this.name = name;
}*/
}