1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 面向对象(二)构造函数 this static 类的成员 对象初始化顺序

面向对象(二)构造函数 this static 类的成员 对象初始化顺序

时间:2023-03-20 01:44:35

相关推荐

面向对象(二)构造函数 this static 类的成员 对象初始化顺序

点击查看好文

TestCode

package com.openlab.day10.object;public class Test {public static void main(String[] args) {//Student stu = new Student("张三", "110");//System.out.println(stu.name);// //System.out.println(Student.no);//Student.say();//stu.say();//Student stu2 = new Student();//Student stu3 = new Student();MiddleStudent ms = new MiddleStudent();}}

目录

TestCode一.构造方法:对象属性默认值代码 二.关键字this代码 三.static关键字的使用四.构造代码块与静态块代码 五.类的成员构造代码块:代码 五.面试热点:java中类成员在构造(对象创建的时候)的调用顺序面试题(代码):

一.构造方法:

在创建对象的同时,初始化属性的值。

注意:在java中,当我们定义了一个类之后,如果没有定义构造方法,则JVM在运行时会自动生成一个无参的构造,让我们使用.如果我们定义了构造方法,则不会再生成无参构造

最佳实践:在java中,当定义了一个类后,不管有没有写其他的构造函数,无参的构造一定要写一个。

对象属性默认值

代码

package com.openlab.dayp10.hw;//类定义:访问修饰[public|private|protected|默认] class 类名称 {}public class user {//1.属性String username;int age;//2.方法//构造函数(alt+insert:上传构造方法)public user(String username,int age) {//对象赋值:对象名称.属性名称 = 值;//使用两个参数的构造函数,初始化属性this.username=username;this.age=age; }//将无参的构造函数,实现public user() {}public void say() {System.out.println("My name is"+this.username);}//3.主函数public static void main(String[] args) {//user u2=new user(); //创建对象:类型 对象名称 = new 类型名称()【构造方法】//在实例化对象的同时,将属性的值,通过构造函数赋予user u1=new user("张三",16);System.out.println(u1.age);System.out.println(u1.username);user u2=new user();//默认提供一个无参的构造方法}}

二.关键字this

this指向当前类中的

在java中,this的关键字,this关键字是一个指针

在类中,this默认指向当前类

如果构造对象,当对象构造完成后,会有一个this指向当前对象

代码

package com.openlab.day10.object;public class ClassRoom {public String name;public String into;public ClassRoom() {}public ClassRoom(String name, String into) {this.name = name;this.into = into;}public ClassRoom(String name) {this.name = name;System.out.println(name);}}

三.static关键字的使用

static:静态的

1.可以修饰java的类、属性、方法 static如果修饰类,只能修饰内部类,等我们讲解内部类的时候再说.也可以修饰属性,如果使用static修饰属性,该属性就是静态属性属于类 也可以修饰方法,静态方法,属于类.

static也可以直接单独使用,被static单独使用的语法块,静态块

静态块:静态块,会最先被类加载,而且只加载一次!!!

4、static也可以修饰import import static 包.*

static修饰的东西,提前加载内存中

public class Test {public static void main(String[] args) {Student.say();}}//构造学生类class Student{//创建属性int id;String name;String gender;//引用其他类Cls cls=new Cls();//构造函数public Student(int id,String name,String gender,Cls cls){this.id=id;this.name=name;this.gender=gender;this.cls=cls;}//创建无参构造函数public Student(){System.out.println("我是一个学生");}//static 修饰的方法先加载public static void say(){System.out.println("我是一个学生");}}

public class Test {public static void main(String[] args) {Student one= new Student();//static修饰后,加载后可以访问为空System.out.println(one.id);}}//构造学生类class Student{//创建属性static int id; //static 修饰后先加载。String name;String gender;//引用其他类Cls cls=new Cls();//构造函数public Student(int id,String name,String gender,Cls cls){this.id=id;this.name=name;this.gender=gender;this.cls=cls;}//创建无参构造函数public Student(){System.out.println("我是一个学生");}}//构造教室类class Cls{int cla_id;String cls_mame;public Cls(int cla_id,String cls_mame){this.cla_id=cla_id;this.cls_mame=cls_mame;}//创建无参构造函数public Cls(){System.out.println("我是一个教室");}}

四.构造代码块与静态块

代码

package com.openlab.day10.object;public class Student {public String name;public static String no = "123456";public int age;public String email;// 对象属性public ClassRoom cs ;static {// 静态块System.out.println("这个是静态块,我会被提前加载");System.out.println("这个是静态块,我会只调用一次");}{System.out.println("构造代码块!!!");System.out.println("在构造函数调用前执行");}public Student() {System.out.println("我是一个无参的构造函数");}public Student(String name, String no, int age, String email) {this.name = name;this.no = no;this.age = age;this.email = email;}public Student(String name, String no) {this.name = name;this.no = no;}public static void say() {System.out.println("我就说一句话,我说完了");}}

五.类的成员

在类中:

正常的属性和方法,都是为对象提供的,都是属于对象

类型 对象名称 = new 构造函数();

对象名称.属性

对象名称.方法()

如果类里面的属性或者方法被static,那这些就属于类。

构造代码块:

直接定义在类中{} 相当于构造函数,在构造函数调用前会被触发

代码

package com.openlab.day10.object;public class MiddleStudent {// 普通属性public String name;public String email;public ClassRoom cr1 = new ClassRoom("java");// 静态属性public static ClassRoom cr2 = new ClassRoom("python");// 静态代码块static {System.out.println("静态代码块开始执行了~~~~~~~");}// 构造代码块{System.out.println("构造代码块已经执行了");}// 构造函数public MiddleStudent() {System.out.println("普通的构造函数开始执行了……");}public static void main(String[] args) {MiddleStudent ms = new MiddleStudent();}}

五.面试热点:java中类成员在构造(对象创建的时候)的调用顺序

当一个类被初始化时:

面试题(代码):

package com.openlab.day10.object;public class Order {static int num = 0;String name = "qqqqqq";static String name2 = "wwwwwwwwwww";static Order parentClass = new Order(); // 第二次初始化对象,static部分不会再触发Order() {System.out.println("这里是构造函数*************");}{System.out.println("name1:" + name);System.out.println("这里是块1============");}static {num += 1;System.out.println("parentClass.name:" + parentClass.name);System.out.println("这里是静态块*************" + num);}public static void main(String[] args) {// 构造函数的执行顺序问题new Order();}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。