Java 构造器

简介: Java 构造器

构造函数


Java构造函数的名称必须和类名一样,且没有返回值,可以是public或private

Java有构造函数,没有析构函数,构造函数是制造对象的过程,析构函数是清除对象的过程


new对象相当于开辟内存空间,析构函数就相当于清除掉开辟的内存空间


每个变量都是有生命周期的,出了生命周期它就死了,它只能存储在离它最近的一对{}中

变量被创建,变量占据内存位置,变量消亡时,系统将回收内存,变量死不能复生,阿弥陀佛


变量创建通过构造函数,回收通过析构函数,但是Java没有析构函数,Why?,因为Java提供了内存自动回收机制,当变量退出生命周期以后,JVM会自动回收所分配对象的内存,所以不需要析构函数来释放内存


对象回收效率依赖于垃圾回收器 GC,其回收算法关系到性能的好坏,是JVM的研究重点

每个Java类都必须有构造函数,否则对象无法创建


如果我们没有主动去定义构造函数,那么Java编译器会自动为该类产生一个空的无参的构造函数,可以有多个构造函数,只要他们的形参列表不相同即可,在new对象时,根据实参的不同,自动匹配相应的构造函数,如果实参形参匹配不上,就会报错


信息隐藏及this关键字


面向对象有一个原则:信息隐藏


类的成员属性,私有 private

类的方法是共有的, public

外界对类成员的操作,只能通过 get/set 方法,在 idea中的快捷键是 Alt +Insert


信息隐藏原则


保护属性信息

公开行为信息

类似函数黑盒,你就拿去用就对了,你不用知道函数里有什么参数,发生了什么,你只需要知道输入参数,就会给你输出,这样安全性就大大提高了


this 负责指向本类中的成员

this 可以代替本类中的构造函数


继承


面向对象最突出的特点就是继承,封装,多态

变量类型的继承


398d8d7460674f369f53a9743ef8b9ee.png


输出 你好


对比面向过程,面向过程里没有继承,会出现重复定义

物以类聚,万物皆对象,对象也可以分成若干类

类内的属性和方法都具有一定的共同点,将这些共同点提取再抽象,就叫做 父类/超类/基类,其他类就是这个类的子类或叫派生类


public class demo12 {
/*    public class Man{
        int height;
        int weight;
        public void eat(){};
        public void plough(){};//耕田
    }
    public class Woman{
        int height;
        int weight;
        public void eat(){};
        public void weave(){};//织布
    }*/
    //提取整合  共同点  作为父类
    public class Hunam{
        int height;
        int weight;
        public void eat(){};
    }
    //继承,只需要单独加一个耕田方法即可
    public class Man extends Hunam{
        public void plough(){};//耕田
    }
    //继承,女人,继承了人的身高体重等属性,还有吃的方法,单独不一样的是织布
    public class Woman extends Hunam{
        public void weave(){};//织布
    }
}


从多个类(对象)中提取共性,形成了父类,再提取,相对父类,一直这样套娃,其他类继承父类,成为子类,也拥有这些特性


子类继承父类所有的属性和方法(但不能直接访问private成员)


信息隐藏原则:方法都是public的,所以子类会继承父类的所有方法,可以直接使用

在同名属性和方法时,本类要比父类的优先级高


单根继承原则:每个类只能继承一个类,C++支持一个类继承多个类

如果不写 extends Java默认继承 object类


Java所有的类都是从 java.lang.object开始,构建成一个关系继承树

每个Java类都必须有构造函数


没有显示定义构造函数,编译器就会自动为该类产生一个空的无参构造函数,如果有了显示的有参构造函数,编译器就不要帮你加了


每个子类的构造函数的第一句话,都默认调用父类的无参构造函数 super() ,除非子类构造函数第一句话不是 super , super 语句必须在第一行, super 语句只能出现一次


相关文章
|
6月前
|
Java
【反射】Java反射机制 -- 常用构造器与方法
【反射】Java反射机制 -- 常用构造器与方法
62 0
|
6月前
|
设计模式 算法 Java
【设计模式】JAVA Design Patterns——Builder(构造器模式)
【设计模式】JAVA Design Patterns——Builder(构造器模式)
|
2月前
|
Oracle Java 关系型数据库
【颠覆性升级】JDK 22:超级构造器与区域锁,重塑Java编程的两大基石!
【9月更文挑战第6天】JDK 22的发布标志着Java编程语言在性能和灵活性方面迈出了重要的一步。超级构造器和区域锁这两大基石的引入,不仅简化了代码设计,提高了开发效率,还优化了垃圾收集器的性能,降低了应用延迟。这些改进不仅展示了Oracle在Java生态系统中的持续改进和创新精神,也为广大Java开发者提供了更多的可能性和便利。我们有理由相信,在未来的Java编程中,这些新特性将发挥越来越重要的作用,推动Java技术不断向前发展。
|
5月前
|
安全 NoSQL Java
探索Java Optional类:构造器、成员变量与方法
探索Java Optional类:构造器、成员变量与方法
|
6月前
|
Java
【JAVA学习之路 | 进阶篇】方法引用与构造器引用
【JAVA学习之路 | 进阶篇】方法引用与构造器引用
|
6月前
|
Java
【JAVA学习之路 | 基础篇】Java构造器(构造方法)
【JAVA学习之路 | 基础篇】Java构造器(构造方法)
|
11月前
lombok在生成的构造器、方法及参数上生成注解
lombok在生成的构造器、方法及参数上生成注解
133 0
|
Java 编译器
Java构造方法(构造器)
1.什么是构造方法? 2.构造方法的使用
87 0
|
Java
java8新特性:方法引用与构造器引用
java8新特性:方法引用与构造器引用
69 0
|
6月前
|
Java
Java提供了四种访问修饰符来控制类、变量、方法和构造器的访问级别
Java提供了四种访问修饰符来控制类、变量、方法和构造器的访问级别
61 1