一.构造器
构造器(构造函数):用于在生成对象是初始化属性
构造器的定义:
public 类名(){
方法体
}
1.生成对象的时候必须调用构造器
2.当没有自定义构造器的时候,类中默认有空构造
3.构造器与方法的最大区别,没有返回值类型
4.构造器只能隐式调用,不能直接调用
构造器的重载:
与方法的重载规则相同
面向对象编程
面向过程编程
示例代码:
public class ConstructStu{
public static void main(String[] args){
Person per = new Person("葫芦娃",5,1.4,'男',true);
per.hello();
Person p1 = new Person("发射特殊光纤","奥特曼",100,18,'男',false);
p1.hello();
per.Person();
}
public static void demo(int i){
}
}
class Person{
String hobby;
String name;
int age;
double height;
char sex;
boolean cool;
public Person(String _name,int _age,double _height,char _sex,boolean _cool){
name = _name;
age = _age;
sex = _sex;
cool = _cool;
height = _height;
}
public Person(String _hobby,String _name,int _age,double _height,char _sex,boolean _cool){
hobby = _hobby;
name = _name;
age = _age;
sex = _sex;
cool = _cool;
height = _height;
}
public void Person(){
System.out.println("调用了构造器");
}
public void hello(){
System.out.println("大家好!我是"+age+"岁的"+name+",我身高"+height+"m,我是个"+sex+"的,我酷不酷?"+cool);
System.out.println("我的爱好是"+hobby);
}
}
二.引用类型
引用类型:
1.所有的类都是一个引用类型
2.A类型的变量,只能存储A类型对象的地址(子类对象地址...)
3.一个对象能够被多个引用指向,一个引用同一时间只能指向一个对象
4.如果引用没有指向任何对象,调用属性及方法将会出现空指针异常
引用.属性名 = 值;
示例代码:
public class InstanceLink{
public static void main(String[] args){
Dog d = new Dog();
d.color = '黑';
d.shout();
char c = d.color;
changeColor(d,c);
d.shout();
}
public static void changeColor(Dog dg,char cc){
dg = new Dog();
dg.color = '红';
cc = '白';
}
}
class Dog{
char color;
public void shout(){
System.out.println("一只"+color+"色的狗在叫");
}
}
class Cat{
}
三.关键字this
this:指向当前对象(this可以看作一个引用,默认指向当前对象)
this的作用:
1.调用当前对象的成员属性(用于与局部变量的区分)
2.调用成员方法
3.用于构造器的互相调用
3.1构造器的调用语句只能写在第一行
3.2一个构造器只能调用一次其它构造器
3.3不能递归
4.可以作为当前对象的引用单独使用
示例代码;
public class ThisStu{
public static void main(String[] args){
Flower flo = new Flower("玫瑰花","酸臭",'黄',200);
flo.forGift();
flo.toWhite();
flo.forGift();
}
public void changeColor(Flower flo){
flo.color = '白';
}
}
class Flower{
String name;
String smell;
char color;
int price;
public Flower(String name,String smell,char color){
this();
this.name = name;
this.smell = smell;
this.color = color;
}
public Flower(String name,String smell,char color,int price){
this(name,smell,color);
this.price = price;
}
public void forGift(){
String name = "狗尾巴花";
System.out.println(color+"色的"+this.name+"被当作礼物送人啦");
sendSmell();
}
public void sendSmell(){
System.out.println("正在散发"+this.smell+"味");
}
public void toWhite(){
new ThisStu().changeColor(this);
}
}
四.引用类型使用
示例代码
public class UseInstance{
public static void main(String[] args){
Hero hero = new Hero();
hero.name = "王大锤";
Weapon wea = new Weapon();
wea.name = "jeff闪光炮";
hero.weapon = wea;//将武器对象的地址赋值给hero对象的weapon引用
hero.fit();
}
}
class Hero{
String name;
Weapon weapon;
public void fit(){
System.out.println(name+"拔出了武器");
weapon.fire();
}
}
class Weapon{
String name;
public void fire(){
System.out.println(name+"发射X-64眼镜蛇飞弹");
}
}