解惑大师

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

面向对象的基本特征

  1. 封装

  2. 多态

  3. 继承

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)安全,可以控制可见范围

  1. 封装的实现
    通过权限修饰符

权限修饰符可以修饰什么?
类(类、接口等)、属性、方法、构造器、内部类

类(外部类):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关键字

  1. 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);
    }
}
posted on 2020-10-26 16:09  解惑大师  阅读(80)  评论(0)    收藏  举报