课堂笔记:
public class User{
//id
private String id;
//name
private String name;
//gender
private char gender;
//age
private int age;
//password
private int password;
//amount
private int amount;
public void setId(String id){
//this关键字表示当前对象的
this.id = id
}
public String getId(){
return id;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public void setPassword(int password){
this.password = password;
}
public int getPassword(){
return password;
}
public void setAmount(int amount){
this.amount = amount;
}
public int getAmount(){
return amount;
}
@Override
public String toString(){
return"User[id = "+id+",name="+name+",gender="+gender+",age="+age+",password="+password+",amount="+amount+"]"
}
}
public class TestUser{
public static void main(String[] args){
User user = new User();
/*
* user.id = "9527";
* user.name = "华安";
* user.gender = 'm';
* user.age = 22;
* user.password = 119;
* user.amount = 998.99;
*/
//如果我们没有重写User类中的toString()方法,则得到的结果和下面一样
String str = user.getClass().getName()+"@"+Integer.toHexString(user.hashcode());
System.out.println(str);
user.setId("9527");
user.setName("华安");
user.setGender('m');
user.setAge(22);
user.setPassword(119);
user.setAmoune(998.99);
System.out.println(user.getId());
System.out.println(user.getName());
System.out.println(user.getGender());
System.out.println(user.getAge);
System.out.println(user.getPassword);
System.out.println(user.getAmoune);
System.out.pringtln(user);
//直接打印对象和调用对象的toString()方法一样
System.out.println(user.toString());
}
}
public class Hero{
/**
* 给私有属性赋值有两种方式:
* 第一种 : 通过其对应的setter方法为其赋值.
* 第二种 : 通过类中的有参构造方法为其赋值.
*/
private String name;
private char gender;
private int age;
private int hp;
/**
* 如何定义构造方法:
* 修饰词 类名(){}
* 定义构造方法的时候不能够有任何的返回值类型,连void也不能有,
* 因为void也是一个返回值类型,表示不返回任何的内容
* 方法名字也必须与类的名字完全相同,连首字母大小都要保持一致
*
* 重点:如果在一个类中没有写任何的构造方法,那么Java编译器在编译的时候会为我们
* 提供一个默认的空参构造
* 如果我们写了任何一种形式的构造方法,那么系统提供给我们的空参构造都将被覆盖.
*
* 构造方法的特点:
* 1,构造方法的方法名要与类名完全一致,包括首字母大写都要完全一致,
* 2,构造发发不能够任何的返回值类型,连void也不能有.
* 3,如果在一个类中没有任何构建方法,那么Java编译器在编译的时候会为我们提供一个
* 默认的空参构造方法;如果我们写了任何一种形式的构造方法,那么Java编译器提供给我们的
* 空参构造都将被覆盖.
* 4,如果一个类中写了多个构造方法,则它们属于构造方法的重载,可以使用this(参数);调用本类中的构造方法
* 5,构造方法不能够被显示的调用
*
* 构造方法不能够被显示的调用,只能够通过new关键字隐式的调用.
* new关键字在次阶段做了哪些事:
* 1,为要创建的对象开辟内存空间.
* 2,调用类的构造方法创建出对象.
* 3,把对象的地址赋值给声明的引用对象.
*/
/**
* 空参构造方法
*
* 构造方法就是用来产生对象的方法.
*
* 在企业开发中一般都是要写空参构造方法,即使用不到;
* 除非,如果程序中明确要求不能够使用空参构造,可以不写.
*/
public Hero(){
}
/**
* 有参构造
*/
public Hero(String name,char gender,int age){
this.name = name;
this.gender = gender;
this.age = age;
}
/**
* 有参构造
*
* 在构造方法中调用本类中的构造方法使用this(参数);
* this表示的是:当前的
* this(参数);在调用本类中构造方法的时候,必须写在本构造方法中的第一行,
* 也就是说,在this(参数);的上面不能够有任何的可执行代码.
*
* 在通过new关键字构造对象的时候,小括号里面写入的是参数,如果没有参数,为空就可以;
* 如果有参数,则传递进来的实际参数要与定义时的参数保持一致(类型一致,数量一致,顺序一致);
*/
public Hero(String name,char gender,int age int hp){
//System.out.println("nihao");
this(name,gender,age);
this.hp = hp
}
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setGender(char gender){
this.gender = gender;
}
public char getGender(){
return gender;
}
public void setAge(int age){
this.age = age;
}
public int getAge(){
return age;
}
public void setHp(int hp){
this.hp = hp;
}
public int getHp(){
return hp;
}
/**
* 重写toString()方法
*/
@Override
public String toString(){
return"Hero[name="+name+",gender="+gender+",age="+age+",hp="+hp+"]";
}
}
public class TestHero{
public static void main(String[] args){
//声明 并且 构建一个对象
// 使用的是构造方法来生成对象
Hero hero = new Hero();
// 构造方法不能够被显示的调用,只能够通过new关键字进行隐式调用
//hero.Hero();
hero.setName("男神");
hero.setGender('m');
hero.setAge(30);
hero.setHp(100);
System.out.println(hero);
Hero hero2 = new hero("哆啦A梦",'m',6);
System.out.println(hero2);
System.out.println(hero2.getName());
Hero hero3 = new Hero("黑猫警长",'m',8,80);
System.out.println(hero3.toString());
}
}