【JavaSE笔记】面向对象(一)_面向对象入门

本期知识点:

面对对象入门

封装

成员变量&局部变量

匿名对象

this关键字

构造方法


1. 面对对象入门

a. 定一个学生类:
学生事物:
属性:姓名,年龄,性别
行为:学习,睡觉,运动
事物转变为一个类:学生Student
属性——>成员变量
行为——>成员方法(去掉static)
b. 创建对象的格式:
类名 对象名 = new 类名();
c. 使用对象区访问成员变量:
对象名.成员变量
例:定义一个手机类:
		class Phone1{
			String brand;
			int price;
			String color;
			
			public void tel(){
				System.out.println("打电话");
			}
			public void mess(){
				System.out.println("发短信");
			}
			public void game(){
				System.out.println("玩游戏");
			}
			public void show(){
				System.out.println(brand+"-"+price+"-"+color);
			}
		}
		public class phoneDemo {
			public static void main(String arg[]){
				Phone1 a=new Phone1();
				a.brand="诺基亚";
				a.price=9999;
				a.color="白色";
				a.show();
				a.tel();
				a.mess();
				a.game();	
			}	
		}


面试题:
Student s = new Student();这句话做了几件事情?
i. Student s 在栈内存分配空间;
ii. new Student ()在堆内存申请堆内存空间;
iii. 通过加载Student类加载成员变量:默认的初始化值
iv. 显示初始化:通过构造方法进行数据初始化值;
v. 通过创建对象进行赋值操作;
vi. 给内存标记一个内存空间的一个地址值:Student s 里的地址间接指向


2. 封装

把成员变量私有化,在基本类里面提供他们公共的访问方法!

a. 以一个手机类的标准写法为例:
成员变量:brand,price,color(将成员变量私有化,提供公共的访问方式)
成员方法:手机特有的功能:打电话,发短息,打游戏。
set和get方法():公共的访问方法
两个明确:
i.返回值类型:String
ii.参数类型:无
			class Phone{
				//成员变量私有
				private String brand ;
				private int price ;
				private String color ;
				
				//提供的公共访问方式:set()/get()
				//获取brand的值,既然获取就返回值类型
				/*
				 * 两个明确:
				 * 	返回值类型:String
				 * 	参数类型:无
				 * */
				public String getBrand(){
					return brand ;
				}
				
				//给brand去赋值的set()方法
				/*
				 * 两个明确:
				 * 	返回值类型:void
				 * 参数类型:String brand
				 * */
				public void setBrand(String b){//b:在测试类里面测试的时候:b属于传递的实际参数
					brand = b ;
				}
				
				public int getPrice(){
					return price ;
				}
				
				public void setPrice(int p){
					price = p ;
				}
				
				
				public String getColor(){
					return color ;
				}
				
				public void setColor(String c){
					color = c ;
				}
				
				//打电话
				public void callPhone(){
					System.out.println("打电话");
				}
				
				public void playGame(){
					System.out.println("玩游戏....");
				}
			}


b. private 关键字:
i. 私有的,不可访问;
ii. private可以修饰成员变量,也可以修饰成员方法;
iii. 被private修饰的成员变量只能在本类中访问,外界不能访问;
		class Demo{
			//定义成员变量
			//int num ;
			private int num ;
			
			//成员方法
			public void show(){
				System.out.println(num);
			}
			
			private void method(){
				System.out.println("method");
			}
			
			public void function(){
				method() ;
			}
		}
		//测试类
		public class PrivateDemo {
			public static void main(String[] args) {
				//创建Demo类的对象
				Demo d = new Demo() ;
				//num在Demo类中被private修饰,外界不能访问!
				//System.out.println(d.num);
				d.show() ;
		//		d.method() ;//The method method() from the type Demo is not visible:不可访问
				d.function() ;
			}
		}


3. 成员变量&局部变量

a. 在类中的位置不同:
i. 成员变量:在类中,方法外;
ii. 局部变量:在方法声明上,或者是在方法定义中
b. 在内存里面的位置不一样
i. 成员变量:在堆内存中
ii. 局部变量:在栈内存中
c. 生命周期不同
i. 成员变量:随着对象的创建而存在,随着对象的消失而消失
ii. 局部变量:随着方法调用的存在,随着方法的调用结束而消失
d. 初始化值不同
i. 成员变量:有默认值
1) int类型:0
2) 引用类型:NULL
ii. 局部变量:必须初始化值,否则报错!(在使用它之前,没有初始化)
注意:当局部变量名字和成员变量名字一致时,就近原则。
例:
		class Phone{
			//定义成员变量
			int a;
			String b;
			//方法
			public void fun(){
				a=1000;			
				System.out.println(a);
			}
		}
		
		public class Demo {
			public static void main(String arg[]){
				Phone p = new Phone();//创建
				System.out.println(p.a);
				System.out.println(p.b);
				p.fun();
			}
		}


4. 匿名对象

没有名字的对象;
调用执行一次;
不适合多次调用;
匿名对象可以作为参数传递;
例:
			class Student01{
				public void show(){
					System.out.println("love learning");
				}
			}
			//匿名对象可以作为参数传递
			class Student02{
				public void fun(Student01 s){
					s.show();
				}
			}
			public class Demo01 {
				public static void main(String arg[]){
					Student01 a=new Student01();
					
			//		a.show();
			//		a.show();
					//使用匿名对象
					new Student01().show();
					new Student01().show();
					//匿名对象可以作为参数传递
					Student02 b=new Student02();
					b.fun(new Student01());
					//链式编程
					new Student02().fun(new Student01());
					new Student02().fun(a);	
				}
			}


5. this关键字

代表当前对象的引用
为什么要使用this关键字:为了区分成员变量和局部变量

6. 构造方法:

给数据进行初始化的方法
a. 方法名与类名同名
b. 没有返回值类型
c. 没有具体的返回值
注意:
a. 如果我门基本类中,没有给出构造方法,系统会默认提供一个无参的构造方法
b. 在代码中如果自己已经给出了构造方法,系统将不再提供默认的无参构造
	class Student2{
		private String name ;
		private int age ;
		
		public Student2(){
			System.out.println("这是无参构造方法");
		}
		
		
		//构造方法是可以重载的:方法名相同,参数列表(参数个数/参数类型)不同,与返回值没有关系
		public Student2(String name){
			System.out.println("这是一个带String类型的一个有参构造方法");
			this.name = name ;
		}
		
		public Student2(int age){
			System.out.println("这是一个带int类型的一个有参构造方法..");
			this.age = age ;
		}
		
		public Student2(String name,int age){
			System.out.println("这是带多个类型的有参构造");
			this.name = name ;
			this.age = age ;
		}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值