JavaSE——类和对象 重点梳理

简介: JavaSE——类和对象 重点梳理

文章目录

  1. 面向对象和面向过程
  2. 类的注意事项
  3. 类的实例化
  4. this 引用
  5. 构造方法
  6. 封装
  7. 面向对象和面向过程

2.类的注意事项
类是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性(外观尺寸等)

类的定义格式:

class ClassName{

field; //字段(属性)或者成员变量
method; //行为或者成员方法

}
class为定义类的关键字,ClassName为类的名字,{}中为类的主体

3.类的实例化

  1. this 引用

来看个问题: 

形参名不小心与成员变量名相同:

public class Test {

public int year;
public int month;
public int day;
public void setDay(int year,int month,int day){
    year = year;
    month = month;
    day = day;
}
public void printDay(){
    System.out.println(year+"-"+month+"-"+day);
}
public static void main(String[] args) {
    Test test = new Test();
    test.setDay(2022,7,25);
    test.printDay();
}

}

public class Test {

public int year;
public int month;
public int day;
public void setDay(int year,int month,int day){
    this.year = year;
    this.month = month;
    this.day = day;
}
public void printDay(){
    System.out.println(year+"-"+month+"-"+day);
}
public static void main(String[] args) {
    Test test = new Test();
    test.setDay(2022,7,25);
    test.printDay();
}

}

  1. 构造方法

注意:构造方法的作用就是对对象中的成员进行初始化,并不负责给对象开辟空间

特性:

public class Test {

public int year;
public int month;
public int day;

//无参构造方法
public Test(){
    this.year=1900;
    this.month=1;
    this.day=1;
}
//带有三个参数的构造方法
public Test(int year, int month, int day) {
    this.year = year;
    this.month = month;
    this.day = day;
}

}

  1. 如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的

public class Test {

public int year;
public int month;
public int day;
//带有三个参数的构造方法
public Test(int year, int month, int day) {
    this.year = year;
    this.month = month;
    this.day = day;
}
public void printDate(){
    System.out.println(year+"-"+month+"-"+day);
}

public static void main(String[] args) {
    //报错
    Test t = new Test();
    t.printDate();
}

}

 6. 构造方法中,可以通过this调用其他构造方法来简化代码

this();访问构造方法

public class Test {

public int year;
public int month;
public int day;

public Test() {
    //调用本类中的其他构造方法        
    this(2022,8,4);
    System.out.println("不带参数的构造方法");
}

//带有三个参数的构造方法
public Test(int year, int month, int day) {
    System.out.println("带参数的构造的方法");
    this.year = year;
    this.month = month;
    this.day = day;
}

public static void main(String[] args) {
    Test t = new Test();

}

}

public Date(){

this(1900,1,1);

}
public Date(intyear,intmonth,intday){

this();

}
/*无参构造器调用三个参数的构造器,而三个参数构造器有调用无参的构造器
形成构造器的递归调用编译报错:Error:(19,12)java: 递归构造器调用*/

  1. 绝大多数情况下使用public来修饰,特殊场景下会被private修饰

6.封装

封装的概念:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互

Java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认知,而访问权限用来控制方法或者字段能否直接在类外使用

Java中提供了四种访问限定符:

No

范围 private default protected public
1 同一包中的同一类  ✔ ✔ ✔ ✔
2 同一包中的不同类 ✔ ✔ ✔
3 不同包中的子类 ✔ ✔
4 不同包中的非子类 ✔

public class Person {

private String name;
public int age;
public void setName(String name){
    this.name = name;
}

public static void main(String[] args) {
    Person person = new Person();
    person.setName("hahaha");
}

}
注意:一般情况下成员变量设置为private,成员方法设置为public

为了更好的管理类,把多个类收集在一起成为一组,称为软件包。有点类似于目录。比如:为了更好的管理电脑中的歌曲,一种好的方式就是将相同属性的歌曲放在相同文件下,也可以对某个文件夹下的音乐进行更详细的分类。

包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式,比如:一个包中的类不想被其他包中的类使用。包还有一个重要的作用:在同一个工程中允许存在相同名称的类,只要处在不同的包中即可

 自定义包:

  1. 在 IDEA 中先新建一个包: 右键 src -> 新建 -> 包
  2. 在弹出的对话框中输入包名
  3. 在包中创建类, 右键包名 -> 新建 -> 类, 然后输入类名即可
  4. 此时可以看到我们的磁盘上的目录结构已经被 IDEA 自动创建出来
  5. 同时我们也看到了, 在新创建的Test.java文件的最上方, 就出现了一个 package 语句

相关文章
|
4月前
|
Java
软件工程设计原理迪米特法则原则优缺点及JAVA代码举例
【4月更文挑战第8天】迪米特法则,也称为最少知识原则,是软件工程中一个旨在减少软件实体之间耦合关系的设计原则。它建议一个对象应该对其他对象有尽可能少的了解,并且只与直接的朋友通信。
80 10
|
4月前
|
存储 Java
软件工程设计原理单一职责原则 ,具体实现及JAVA代码举例
【4月更文挑战第6天】单一职责原则(Single Responsibility Principle, SRP)是面向对象设计原则之一,它指出一个类应该仅有一个变化的原因,即一个类应该只负责一项职责。这样做的目的是降低类的复杂性,提高系统的可维护性。
43 1
|
11月前
|
Java
【JavaSE专栏62】继承,JAVA面向对象编程中的一项重要特性
【JavaSE专栏62】继承,JAVA面向对象编程中的一项重要特性
|
10月前
|
存储 Java
【JavaSE】基础笔记 - 类和对象(上)
【JavaSE】基础笔记 - 类和对象(上)
62 0
|
10月前
|
Java 编译器
【JavaSE】基础笔记 - 类和对象(下)
【JavaSE】基础笔记 - 类和对象(下)
54 0
|
4月前
|
Java
软件工程设计原理里氏替换原则 ,具体实现及JAVA代码举例
里氏替换原则(Liskov Substitution Principle, LSP)是面向对象设计的基本原则之一,由Barbara Liskov提出。这个原则指出,如果类 S 是类 T 的子类型,则程序中使用 T 的对象的地方都可以不经修改地使用 S 的对象。换句话说,子类的对象应该能够替换掉它们的父类对象,而不影响程序的正确性。这个原则强调了继承关系中的行为兼容性,保证了基类和派生类之间的正确抽象和继承关系。
64 3
|
3月前
|
设计模式 安全 Java
Java编程思想重点开发必看
Java编程思想重点开发必看
19 0
|
4月前
|
Java 关系型数据库
软件工程设计原理开放封闭原则 ,具体实现及JAVA代码举例
【4月更文挑战第4天】开放封闭原则(Open/Closed Principle, OCP)是面向对象设计的核心原则之一,它指出软件实体(类、模块、函数等)应该对扩展开放,对修改封闭。这意味着在不修改已有代码的前提下,可以通过扩展来增加新的功能,从而提高软件系统的灵活性和可维护性
55 1
|
4月前
|
Java 开发者
软件工程设计原理接口隔离原则 ,具体实现及JAVA代码举例
【4月更文挑战第7天】接口隔离原则(Interface Segregation Principle, ISP)是面向对象设计原则之一,旨在减少不必要的依赖关系,通过拆分庞大且臃肿的接口为更小、更具体的接口来实现。这个原则强调“客户端不应该被迫依赖于它不使用的接口”,意味着一个类不应该被迫实现它不使用的方法。
41 1
|
4月前
|
Java
软件工程设计原理依赖倒置原则 ,具体实现及JAVA代码举例
【4月更文挑战第5天】在软件工程中,依赖倒置原则(Dependency Inversion Principle, DIP)是一项重要的设计原则,它是SOLID原则中的一个组成部分。这个原则主张高层模块不应该依赖于低层模块,而是应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象。这种设计方法有助于降低代码间的耦合度,增强系统的灵活性和可维护性
41 0