学习JavaEE的日子 day12 构造方法 类的制作

这篇具有很好参考价值的文章主要介绍了学习JavaEE的日子 day12 构造方法 类的制作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Day12

需求:创建人类的对象,并操作对象

分析:

人类 - Person

属性:name、sex、age

方法:eat、sleep

场景:创建多个对象,去操作对象

//测试类:该类中有main方法,测试我们写好的代码
public class Test01 {
public static void main(String[] args) {
		
		Person p1 = new Person();
		Person p2 = new Person();
		
		p1.name = "巴得伟";
		p1.sex = '男';
		p1.age = 23;
		
		p2.name = "波多野结衣";
		p2.sex = '女';
		p2.age = 18;
		
		p1.eat();
		p1.sleep();
		
		p2.eat();
		p2.sleep();
		
		Person.method();
		
	}
}
public class Person {

	//成员变量
	String name;
	char sex;
	int age;
	
	//成员方法
	public void eat(){
		System.out.println(this.name + "吃饭饭");
	}
	
	//成员方法
	public void sleep(){
		System.out.println(this.name + "睡觉觉");
	}
	
	//静态方法
	public static void method(){
		System.out.println("静态方法");
	}
}

面向对象内存图:
学习JavaEE的日子 day12 构造方法 类的制作,学习JavaEE,java-ee,构造方法,get/set,类的制作

注意:

1.class文件只加载一次

2.class文件中包含了该类中的所有信息(包含方法等)

3.new对象会在堆中开辟空间,存储成员变量

4.成员变量系统会赋默认值

5.每个对象共享一份成员变量

6.方法中的this表示调用该方法的对象(谁调用的,this - 就指向谁)

7.成员方法可以调用this

8.静态方法使用类名调用,所以静态方法内不能使用this

1.构造方法

前言 - 创建对象的语法:类型 引用 = new 构造方法;

含义:与类名相同,且没有返回项的方法(在类中定义的。方法名与类名字相同,无返回值类型声明(包括void)。)

作用:
1.和new关键字在一起表示创建对象
2.初始化数据

注意:

  • 1.创建对象的过程(Person p = new Person()😉,也叫做实例化
  • 2.当类中没有有参构造时,系统会默认实现无参构造

经验:类中编写了有参构造,我们记得把无参构造加上

需求:创建人类,操作对象

public static void main(String[] args) {
		
		//类型 引用 = new 构造方法;
		Person p = new Person("巴得伟", '男', 23);
		
		System.out.println(p.name);
		System.out.println(p.sex);
		System.out.println(p.age);
		
		p.eat();
		p.sleep();
	}
}

public class Person {
	
	//成员变量
	String name;
	char sex;
	int age;
	
	//构造方法 - 无参构造
	public Person(){
		System.out.println("无参构造");
		
		//初始化数据
		this.name = "默认值";
		this.sex = '男';
		this.age = 0;
	}
	
	//构造方法 - 有参构造
	public Person(String name,char sex,int age){
		
		System.out.println("有参构造");
		
		this.name = name;
		this.sex = sex;
		this.age = age;
	}
	
	//成员方法
	public void eat(){
		System.out.println(this.name + "吃饭饭");
	}
	
	//成员方法
	public void sleep(){
		System.out.println(this.name + "睡觉觉");
	}
}

构造方法内存图:

学习JavaEE的日子 day12 构造方法 类的制作,学习JavaEE,java-ee,构造方法,get/set,类的制作

public class Person{
    //注意:这种不是构造方法,是成员方法
    public void Person(){}
}

1.1 构造方法的注意事项

* 构造方法的创建

如果没有定义构造方法,系统将给出一个默认的无参数构造方法

如果定义了构造方法,系统将不再提供默认的构造方法

* 构造方法的重载

如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法

* 推荐的使用方式

无论是否使用,都手工书写无参数构造方法

* 重要功能

可以使用带参构造,为成员变量进行初始化

每一个类中都有一个默认的无参的构造方法。

构造方法可以有多个,但参数不一样,就是重载。

1.2 赋值方式

创建对象并为其成员变量赋值的两种方式

​ 1:无参构造方法创建对象后使用setXxx()赋值

​ 2:使用带参构造方法直接创建带有属性值的对象

public class StudentDemo {

  public static void main(String[] args) {

    //无参构造方法创建对象后使用setXxx()赋值

   Student s1 = new Student();

   s1.setName("小彭");

   s1.setAge(21);

   s1.show();

   //使用带参构造方法直接创建带有属性值的对象

   Student s2 = new Student("小彭",21);

   s2.show();

  }

}

1.3 idea直接生成构造方法

鼠标右键,选择生成,找到get、set,ctrl+a全选一键生成。

或者鼠标右键,选择 ptg to javaBean,一键生成。

2.标准类制作

① 类名需要见名知意

② 成员变量使用private修饰

③ 提供至少两个构造方法

​ 无参构造方法

​ 带全部参数的构造方法

④ get和set方法

​ 提供每一个成员变量对应的setXxx()/getXxx()

⑤ 如果还有其他行为,也需要写上

案例:

public class User {

     //1.私有化全部的成员变量

     //2.空参构造

     //3.带全部参数的构造

     //4.针对于每一个私有化的成员变量都要提供其对应的get和set方法

     //5.如果当前事物还有其他行为,那么也要写出来,比如学生的吃饭,睡觉等行为

     private String username;//用户名

     private String password;//密码

     private String email;//邮箱

     private char gender;//性别

     private int age;//年龄

     //空参构造方法

     public User() {

     }
     //带全部参数的构造
     public User(String username, String password, String email, char gender, int age) {
        this.username = username;
        this.password = password;
        this.email = email;
        this.gender = gender;
        this.age = age;
     }

    //get和set

     public String getUsername() {
        return username;
     }
     public void setUsername(String username) {
        this.username = username;
     }

     public String getPassword() {
        return password;
     }

     public void setPassword(String password) {
        this.password = password;
     }

     public String getEmail() {
        return email;
     }

     public void setEmail(String email) {
        this.email = email;
     }
     public char getGender() {
        return gender;
    }

     public void setGender(char gender) {
        this.gender = gender;
     }

     public int getAge() {
        return age;
     }
 
     public void setAge(int age) {
        this.age = age;
     }

     public void eat(){
        System.out.println(username + "在吃饭");
     }
 }

测试类:

public class Test {

  public static void main(String[] args) {

    //写一个标准的javabean类

    //咱们在课后只要能把这个标准的javabean能自己写出来,那么就表示今天的知识点就ok了

    //利用空参构造创建对象

    User u1 = new User();

    //如果利用空参创建对象,还想赋值只能用set方法赋值

    u1.setUsername("zhangsan");

    u1.setPassword("1234qwer");

    u1.setEmail("pcb@qq.cn");

    u1.setGender('男');
    u1.setAge(23);
    //获取属性的值并打印
    System.out.println(u1.getUsername() + ", " + u1.getPassword()
              + ", " + u1.getEmail() + ", " + u1.getGender() + ", " + u1.getAge());
    u1.eat();

    System.out.println("=============================");
        
        //简单的办法
        //利用带全部参数的构造来创建对象
        //快捷键:ctrl + p
        User u2 = new User("lisi","12345678","pcb@qq.cn",'女',24);
        System.out.println(u2.getUsername() + ", " + u2.getPassword()
                + ", " + u2.getEmail() + ", " + u2.getGender() + ", " + u2.getAge());
        u2.eat();
    }
}

简答题

1. 构造器 Constructor 是否可被 override?

Constructor 不能被 override(重写),但是可以 overload(重载),所以你可以看到一个类中有多个构

造函数的情况。

2. Java 中定义一个不做事且没有参数的构造方法的作用

Java 程序在执行子类的构造方法之前,如果没有用 super() 来调用父类特定的构造方法,则会调用父

类中“没有参数的构造方法”。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又

没有用 super() 来调用父类中特定的构造方法,则编译时将发生错误,因为 Java 程序在父类中找不到

没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。文章来源地址https://www.toymoban.com/news/detail-799261.html

到了这里,关于学习JavaEE的日子 day12 构造方法 类的制作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学习JavaEE的日子 day13补 深入类加载机制及底层

    初识类加载过程 使用某个类时,如果该类的class文件没有加载到内存时,则系统会通过以下三个步骤来对该类进行初始化 1.类的加载(Load) → 2.类的连接(Link) → 3.类的初始化(Initialize) 类的加载(Load):将类的class文件读入内存,并为之创建一个java.lang.Class的对象,此

    2024年01月18日
    浏览(41)
  • 学习JavaEE的日子 day13 封装 static private this 类加载机制

    理解:private是访问修饰符的一种,访问修饰符规定了访问权限. 作用: ​ 1.private修饰属性:该属性只能在类的内部使用 ​ 2.private修饰方法:该方法只能在类的内部使用 应用场景:不让让外界访问的属性和方法就用private修饰 面向对象三大特征之一: 封装,继承,多态 理解:

    2024年01月18日
    浏览(35)
  • 【Java】构造方法及类的初始化

    活动地址:CSDN21天学习挑战赛 ✨ 博客主页: XIN-XIANG荣 ✨ 系列专栏: 【Java SE】 ✨ 一句短话: 难在坚持,贵在坚持,成在坚持! 构造方法(也称为构造器)是一个特殊的成员方法,其名字必须与类名相同,在创建对象时,由编译器自动调用,并且在整个对象的生命周期内只调用一次。

    2023年04月10日
    浏览(34)
  • Python中的super:调用父类的构造方法

     在子类构造方法中调用父类构造方法的两种方式: 1、未绑定的方法: 直接使用父类名来进行调用 ,即‘父类名.父类方法名(self,[参数1, 参数2,...])’ 2、 super() : 如果涉及多继承,该函数只能调用第一个直接父类的构造方法。super().父类方法名(self, [参数1, 参数2,...])或supe

    2024年02月15日
    浏览(46)
  • C++ 学习 ::【基础篇:13】:C++ 类的基本成员函数:类类型成员的初始化与构造函数问题

    本系列 C++ 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C++ 学习系列将分为三个阶段: 基础篇、STL 篇、高阶数据结构与算法篇 ,相关重点内容如下: 基础篇 : 类与对象 (涉及C++的三大特性等); STL 篇 : 学习使用 C++ 提供的 STL 相关库 ; 高阶数据结构与算

    2024年02月08日
    浏览(48)
  • iOS开发Swift-8-类的继承,方法重写,构造器,枚举类型,可选类型,强制解包,可选绑定,隐式可选类型...

    1.类的继承  2.方法的重写 3.构造器: 创建对象;给对象进行初始化  4.枚举类型 5.枚举的原始值 6.枚举的简写  7.可选类型  8.强制解包 9.可选绑定  10.隐式可选类型  11.可选类型自动赋值

    2024年02月09日
    浏览(31)
  • C++ 学习 ::【基础篇:16】:C++ 类的基本成员函数:拷贝构造函数(认识、特征、注意点及典型使用场景)及其基本写法与调用

    本系列 C++ 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C++ 学习系列将分为三个阶段: 基础篇、STL 篇、高阶数据结构与算法篇 ,相关重点内容如下: 基础篇 : 类与对象 (涉及C++的三大特性等); STL 篇 : 学习使用 C++ 提供的 STL 相关库 ; 高阶数据结构与算

    2024年02月08日
    浏览(35)
  • Scala第六章节(类和对象的定义、访问修饰符和构造器的用法、main方法的实现形式、伴生对象的使用以及工具类的案例)

    章节目标 掌握类和对象的定义 掌握访问修饰符和构造器的用法 掌握main方法的实现形式 掌握伴生对象的使用 掌握定义工具类的案例 1. 类和对象 Scala是一种函数式的面向对象语言, 它也是支持面向对象编程思想的,也有类和对象的概念。我们依然可以基于Scala语言来开发面向

    2024年03月19日
    浏览(36)
  • C++学习day--12 循环

    项目实现: #include iostream #include Windows.h #include string using namespace std; int main(void) {     string name;      string pwd;      while (1) {         system(\\\"cls\\\");          std::cout \\\"请输入账号:\\\";          std::cin name; std::cout \\\"请输入密码:\\\";         std::cin pwd;         if (name

    2024年02月06日
    浏览(35)
  • 黑马苍穹外卖学习Day12

    结果 Controller层 Service实现类

    2024年01月25日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包