Java--面向对象

01、面向对象的基本概念

学习面向对象的过程,实际上也是建立面向对象思维的过程。

先整体,再局部。先抽象,再具体,看透事物的本质,用java代码来解释某个事物的行为和特征,将其转变成一个可以被程序理解和调用的实例。

02、类与对象之间关系
定义一个类的对象,其实就是创建一个类的实例,表示一个具体的对象。

格式: 类名  对象名   =  new  类名();

例如: 人类  亚当       =  new 人类();

左边的这个人类,表示亚当的类型是人类,右边的 new 人类(); 表示亚当是一个具体的实例,拥有人类的行为和特征。

在声明一个具体对象时,如果只声明对象而没有给出具体实例,例如

People  p1 =null;  或者   People p2 ; 

此时p1 和p2 无法正常使用,因为没有具体的内存指向。

p1 = new People(); p2 = new People();

在有了具体的内存指向后,p1和p2 才可以正常使用。

03、类中的成员

类的定义

class 类名 {

(特征)属性名称 

例如:  int  age ;  //年龄

(行为)方法名(){ }

例如: void  move(){  直立行走 }

}

如果要想访问类中的属性或方法则可以依靠以下的语法形式:
访问类中的属性:对象名.成员属性 ;
调用类中的方法:对象名.成员方法();

package Object_对象;

public class GirlFriend {
	private String name;
	private int age;
	private String gender;
	
	
	public void sleep() {
		System.out.println("女朋友在睡觉");
	}
	public void eat() {
		System.out.println("女朋友在吃饭");
	}
	public void setName(String n) {
		name=n;
	}
	public String getName() {
		return name;
	}
	public void setAge(int a) {
		if(a>=18 && a<=50) {
			age=a;
		}else {
			System.out.println("非法参数");
		}
	}
	public int getAge() {
		return age;
	}
	public void setGender(String g) {
		gender=g;
	}
	public String getGender() {
		return gender;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		GirlFriend g=new GirlFriend();
		g.setName("小诗诗");
		g.setAge(18);
		g.setGender("女");
		
		System.out.println(g.getName());
		System.out.println(g.getAge());
		System.out.println(g.getGender());
		
		g.sleep();
		g.eat();

	}

}

04、类的构造器

类的构造器,也称为构造方法,每个类中都默认存在一个,与类名完全相同,没有返回值类型修饰符(包括void),没有参数的方法。

public class People {
	  public People() {
		//自动产生的构造方法
	}

构造方法的作用,是给类中的成员属性初始化赋值。在类中不允许先声明变量后赋值的情况,一般情况下,都是使用构造方法来给属性赋值,这个过程就是初始化。

构造方法也是类中的方法,支持方法的重载。即方法名相同,参数列表不同。同一个类中可以有多个构造方法,在创建类的对象时, new 类名 () ,这个()实际上就是一个无参构造。也就是说,在创建类的实例对象时,实际上是执行了该类的构造方法。

public class People {
	  public People() {
		System.out.println("我是People类构造器");  
	  }
	
	public static void main(String[] args) {
		People p1 = new People();//执行
		
	}
 
}

注意:当在类中写了有参构造方法后。默认的无参构造将不再生效,创建类的实例对象时,需要根据构造方法传递对应的参数,否则就会报错。

(1)构造方法名称与类名相同,没有返回值声明(包括 void)
(2)构造方法用于初始化数据(属性)
(3)每一个类中都会有一个默认的无参的构造方法
(4)如果类中写了构造方法,那么默认构造方法将无效
(5)如果写了有参构造方法,还想保留默认构造方法,需要显示的写出来。
(6)构造方法可以有多个,但参数不一样,称为构造方法的重载
(7)在构造方法中调用另一个构造方法,使用this(...),该句代码必须在第一句。
(8)构造方法之间的调用,必须要有出口,否则会保错。
(9)给对象初始化数据可以使用构造方法或setter方法,通常情况下,两者都会保留。
(10)一个好的编程习惯是要保留默认的构造方法。(为了方便一些框架代码使用反射来创建对象)。


05、this关键字的调用


this关键字指向的是当前对象的引用
调用类中的属性:this.属性名称,指的是访问类中的成员变量,用来区分成员变量和局部变量(重名问题)
调用类中的方法:this.方法名称,用来访问本类的成员方法
调用类构造方法:this();访问本类的构造方法,()中可以有参数的 如果有参数 就是调用指定的有参构造
注意:
1.this() 不能使用在普通方法中,只能写在构造方法中

public class People {
	public People(int age,String name) {
		this();//调用无参构造
		System.out.println("我是有参构造");
	}
	public People() {
		System.out.println("我是无参构造");
	}
	public static void main(String[] args) {
		People p1 = new People(20,"刘禅");
		
	}
}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值