面向对象的基本特征
-
封装
-
多态
-
继承
1.封装
class Person{
String name;
public int age;
}
public static void main(String[] args){
Person p = new Person();
// 外部操作可以直接对成员进行直接操作
p.name = '小灰灰';
p.age = 10;
// 有可能出现非法值
p.age = -20;
}
1、好处:
(1)隐藏实现细节,方便使用者使用
(2)安全,可以控制可见范围
- 封装的实现
通过权限修饰符
![]()
权限修饰符可以修饰什么?
类(类、接口等)、属性、方法、构造器、内部类
类(外部类):public和缺省
属性:4种
方法:4种
构造器:4种
内部类:4种
3、通常属性的封装是什么样的?
当然属性的权限修饰符可以是private、缺省、protected、public。但是我们大多数时候,见到的都是private,然后给它们配上get/set方法。
class Student{
private String name;
private int age;
private boolean marry;
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public void setMarry(boolean marry) {
this.marry = marry;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public boolean isMarry() {
return marry;
}
}
public class Test{
public static void main(String[] args) {
Student s1 = new Student();
s1.setAge(10);
s1.setName("小灰灰");
s1.setMarry(false);
System.out.println(s1.getAge());
System.out.println(s1.getName());
System.out.println(s1.isMarry());
}
}
2.构造器
(1)作用 用于对象实例化的时候,实现对象初始化; 和new对象一起使用
//调用无参构造创建对象
类名 对象名 = new 类名();
//调用有参构造创建对象
类名 对象名 = new 类名(实参列表);
(2)可以在创建对象的同时为属性赋值
public class Circle{
private double radius;
public Circle(){
}
public Circle(double r){
radius = r;//为radius赋值
}
}
构造器的特点:
(1)所有的类都有构造器
(2)如果一个类没有显式/明确的声明一个构造器,那么编译器将会自动添加一个默认的无参构造
(3)如果一个类显式/明确的声明了构造器,那么编译器将不再自动添加默认的无参构造,如果需要,那么就需要手动添加
(4)构造器的名称必须与类名相同
(5)构造器没有返回值类型
(6)构造器可以重载
public class Circle{
private double radius;
public Circle(){
}
public Circle(double r){
radius = r;//为radius赋值
}
}
3.this关键字
- this关键字
(1) 出现在构造器中: 代表正在构建的对象
(2) 出现在成员方法中: 表示正在调用这个方法的对象
2.this 用法
(1) this.属性
当局部变量和成员变量同名时候,可以用this区分
(2) this.方法
表示当前对象调用方法,一般可以省略
(3) this() 或者 this(参数列表)
代表调用构造器
例子:
public class Student{
private String name;
private int score;
public Student(){
}
public Student(String name){
this.name = name;
}
public Student(String name, int score){
this(name);
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setScore(int score){
this.score = score;
}
public int getScore(){
return score;
}
}
4.包
4.1 包的作用:
4.1.1.可以避免类重名
有了包之后,类的全名称就变为:包.类名
4.1.2.分类管理众多包
例如:java.lang包,java.util包,java.io包.....
4.1.3.可以控制某些类型或成员的可见范围
如果某个类型或者成员的权限修饰缺省的话,那么就仅限于本包使用
4.2 包的声明
package 包名;
注意:
(1)必须在源文件的代码首行
(2)一个源文件只能有一个
4.2.1 包的命名规范和习惯:
(1)所有单词都小写,每一个单词之间使用.分割
(2)习惯用公司的域名倒置
4.2.2 使用其他包语法
(1) 全名称引用
例如:java.util.Scanner input = new java.util.Scanner(System.in);
(2) import语句
import 包.类名;
import 包.*;
注意:当使用两个不同包的同名类时,例如:java.util.Date和java.sql.Date。
一个使用全名称,一个使用简名称
package 路径1.路径2.Test;
import java.util.Scanner;
public class Test{
public static void main(String[] args){
Scanner input = new Scanner(System.in);
}
}

浙公网安备 33010602011771号