JAVA基础 类与对象(1)
1.引用
1.1 一个引用指向一个对象
引用的概念,如果一个变量的类型是 类类型,而非基本类型,那么该变量又叫做引用。
public class JAVA_basic_code11 {
public static class Person{
private String name;
Person(){};
}
public static void main(String args[]){
// Person,又叫做引用
// =的意思指的h这个引用代表右侧创建的对象
// “代表” 在面向对象里,又叫做“指向”
Person stephen=new Person();
}
}
1.2 一个对象 多个引用
对象只有一个,引用有多个,引用2通过指向引用1,间接访问对象
public class JAVA_basic_code11 {
public static class Person{
private String name;
Person(){};
}
public static void main(String args[]){
// Person,又叫做引用
// =的意思指的h这个引用代表右侧创建的对象
// “代表” 在面向对象里,又叫做“指向”
Person stephen=new Person();
//s1指向stephen,s2指向s1
Person s1=stephen;
Person s2=s1;
}
}
1.3一个引用,多个对象
public class JAVA_basic_code11 {
public static class Person{
private String name;
Person(){};
}
public static void main(String args[]){
// Person,又叫做引用
// =的意思指的h这个引用代表右侧创建的对象
// “代表” 在面向对象里,又叫做“指向”
Person stephen=new Person();//指向对象1
stephen=new Person();//指向对象2
}
}
2.继承
有两个类,一个类是人,一个是学生。
现在用两种方式创建类,第一种是不继承,第二种是继承。
第一种方式
public class JAVA_basic_code11 {
public static class Person{
private String name;
Person(){};
}
public static class Student{
private String classname;
Student(){};
}
public static void main(String args[]){
// Person,又叫做引用
// =的意思指的h这个引用代表右侧创建的对象
// “代表” 在面向对象里,又叫做“指向”
Person stephen=new Person();//指向对象1
Student student=new Student();//指向学生对象
}
}
第二种方式
学生类继承Person类,多了一个班级名称的属性
public class JAVA_basic_code11 {
public static class Person{
//如果是private,无法直接赋值
String name;
Person(){};
}
//Student继承Person
public static class Student extends Person{
String classname;
Student(){};
}
public static void main(String args[]){
// Person,又叫做引用
// =的意思指的h这个引用代表右侧创建的对象
// “代表” 在面向对象里,又叫做“指向”
Person stephen=new Person();//指向对象1
Student student=new Student();//指向学生对象
student.name="yzs";
student.classname="软件1班";
System.out.println(student.name);//结果是yzs
}
}
练习
设计一个类Armor护甲
继承Item类,并且额外提供一个属性ac: 护甲等级 int类型
实例化出两件护甲
名称 价格 护甲等级
布甲 300 15
锁子甲 500 40
public class JAVA_basic_code12 {
//物体类item
static class item{
String name;
double price;
item(String name,double price){
this.name=name;
this.price=price;
};
}
//Armor类
static class Armor extends item{
int rank;
Armor(String name,double price,int rank){
super(name,price);//父类的构造函数
this.rank=rank;
}
}
public static void main(String args[]){
//创建两个Armor对象
Armor armor1=new Armor("布甲",300,15);
Armor armor2=new Armor("锁子甲",500,40);
System.out.println(armor1.name+" "+" "+armor1.price+" "+armor1.rank);
System.out.println(armor2.name+" "+" "+armor2.price+" "+armor2.rank);
}
}
3.方法的重载
方法的重载指的是方法名一样,但是参数类型不一样
public class JAVA_basic_code13 {
//attack方法重写
static void sayhello(String a){
System.out.println(a+"sathello");
}
static void sayhello(String a,String b){
System.out.println(a+"and"+b+"sayhello");
}
public static void main(String args[]){
//同一个方法名,不同的参数
sayhello("张三");
sayhello("张三","李四");
}
}
4.构造方法
4.1什么是构造方法
方法名和类名一样(包括大小写)
没有返回类型
实例化一个对象的时候,必然调用构造方法
4.2无参的构造方法
无参的构造方法,如果不写,就会默认提供一个
public class JAVA_basic_code13 {
class Student{
//名字和类名一样,没有返回类型的方法
Student(){}
}
}
4.3有参数的构造方法
public class JAVA_basic_code13 {
class Student{
private String name;
private char gender;
private int age;
//名字和类名一样,没有返回类型的方法
Student(){}
//带参数的构造方法
Student(String name,char gender,int age){
this.name=name;
this.gender=gender;
this.age=age;
}
}
}
5.this关键字
5.1
this这个关键字,相当于普通话里的“我”
小明说 “我吃了” 这个时候,“我” 代表小明
小红说 “我吃了” 这个时候,“我” 代表小红
"我"代表当前人物
this这个关键字,相当于普通话里的“我”
this即代表当前对象
5.2
如果要在一个构造方法中,调用另一个构造方法,可以使用this()
public class JAVA_basic_code13 {
static class Hero {
String name; //姓名
float hp; //血量
float armor; //护甲
int moveSpeed; //移动速度
//带一个参数的构造方法
public Hero(String name) {
System.out.println("一个参数的构造方法");
this.name = name;
}
//带两个参数的构造方法
public Hero(String name, float hp) {
this(name);//用this()调用其他的构造方法
System.out.println("两个参数的构造方法");
this.hp = hp;
}
}
public static void main(String[] args) {
Hero teemo = new Hero("提莫",383);
System.out.println(teemo.name);
}
}