云盘建设网站,适合学生做的网站,搜索引擎关键词的工具,佛山学校网站建设Day12 需求#xff1a;创建人类的对象#xff0c;并操作对象 分析#xff1a; 人类 - Person 属性#xff1a;name、sex、age 方法#xff1a;eat、sleep 场景#xff1a;创建多个对象#xff0c;去操作对象 //测试类#xff1a;该类中有main方法#xff0c;测试我们写…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(静态方法);}
}
面向对象内存图 注意 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 睡觉觉);}
}
构造方法内存图 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、setctrla全选一键生成。 或者鼠标右键选择 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和setpublic 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(pcbqq.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 pUser u2 new User(lisi,12345678,pcbqq.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 程序在父类中找不到 没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法。