类 ; 对象和引用 ; 构造函数 ; 函数的重载
类:
class learn1{
int i=0 ; //成员变量
void shout(){ //成员方法
System.out.println("i'm "+age);
}
}
//其实类有点像C语言中的 struct{}
//创建一个对象. 等号左边,是一个引用,相当于C语言中的指针,等号的右边,是一个对象,相当于由malloc分配的一块内存地址
learn1 Me = new learn1();
//对象的使用方法
// 对象.变量
// 对象.函数()
---------------------------------------------
class Dog{
String name;
int age;
String color;
void jump(String love){
System.out.println("");
System.out.println("My name is : "+name+" i'm "+age+" i'm "+color);
System.out.println("我特别喜欢"+love+",它是我见过的最帅的男生.");
}
}
----------------------------------------------
构造函数,函数的重载
构造函数,就是一个类中,与类名相同的函数,当生成一个类时,是由这个构造函数生成的
函数的重载: 就是在一个已有函数的基础上,再建立一个函数,函数名和返回值类型均相同,只有参数不同,当调用这些函数的时候,根据传入的参数不同,所调用的同名函数也不同
class A{
void funA(){
System.out.println("这是一个没有参数的funA");
}
void funA(int i){
System.out.println("这是一个有参数"+i+"的funA");
}
//-------------------上面是函数的重载, 下面是构造函数
A(){ //这个就是构造函数(如果没写,系统会自动补上)
System.out.println("--------------我是构造函数-----------");
}
}
-----------------------------------------------
class Person{
String name;
int age;
//构造函数
Person(){
}
//重载构造函数
Person(String n , int a){
name = n ;
age = a;
System.out.println("我的名字叫: "+name+" 我今年 "+age+" 岁了");
}
//System.out.println("我的名字叫: "+name+" 我今年 "+age+" 岁了");---错 , 因为一个语句应该属于一个函数
//当你自己定义了一个构造函数,系统就不会再自动定义无参数的构造函数了
}
问题: 类中可以直接拥有非定义语句么? 答案:不行
class Sentence{
System.out.println("Hello"); //错的!
}
---------------------------------------------------
综合
class Test{
public static void main(String args []){
Dog may = new Dog();
may.name = "May - 罗婧";
may.age = 19 ;
may.color = "blue";
Dog owen = new Dog();
owen.name = "Owen - 应天成";
owen.age = 20;
owen.color = "black";
owen.jump(may.name);
may.jump(owen.name) ;
//匿名对象
new Dog().jump(may.name);
System.out.println("");
System.out.println("anonymity name is "+new Dog().name);
//函数的重载(只要参数列表不同即可)
A fun = new A();
int i = 0;
fun.funA();
fun.funA(i);
//构造函数--调用,赋初值
Person person1 = new Person("应天成" , 20);
Person person2 = new Person("罗婧" , 19);
//类中可以有语句么? 看来是不行
//new Sentence();
}
}
(tip . 匿名对象的使用 ----- 静态类的使用 )
匿名对象--> 不用引用,直接生成对象,一次性
静态类引用--> 直接用类名调用