Java尚硅谷学习Lecture7

在继续学习Java面向对象的知识,首先学习Java类和类的成员

package OOPpreliminary;
/**
 * 
 * @Description
 * @author 
 * @version 
 * @date 2021年12月2日下午3:27:32
 * 1.java类及类的成员:属性、方法、构造器;代码块、内部类
 * 2.面向对象三大特征:封装、继承、多态(抽象)
 * 3.其他关键字:this、super、static、final、abstract、interface、package、import等
 * 
 * 面向对象的两个要素:类和对象
 * 类:一类事物的抽象概念
 * 对象:实际存在的个体,也称实例
 * 重点是对类的设计,设计类就是设计类的成员
 * 
 * 类和对象创建和执行的三步骤:
 * 创建类
 * 类的实例化
 * 调用对象的结构:"对象.属性" "对象.方法"
 */
public class Introduce 
{
	public static void main(String[] args) {
		
	}
}

紧接着学习类中属性和方法的定义和使用

package OOPpreliminary;
/**
 * 
 * @Description
 * @author 
 * @version 
 * @date 2021年12月3日上午8:56:21
 * 
 * 属性=成员变量=field=域、字段
 * 方法=成员方法=函数=method
 * 创建类的对象=类的实例化=实例化一个类
 * 如果一个类创建了多个对象,每个对象都独立拥有一套类的属性(非static的)
 * 修改其中一个对象的属性,不改变另外一个对象属性
 */
public class PersonTest 
{	
	public static void main(String[] args) {
		//创建类
		Person p1 = new Person();
		//调用类的属性
		p1.name="Tom";
		System.out.println(p1.name);
		//调用类的方法
		p1.eat();
		p1.sleep();
		p1.talk("Chinese");
		//创建多个对象
		Person p2;
		p2=p1;//将p1保存对象的地址赋给p2,导致p1、p2指向堆空间同一个对象实体
		System.out.println(p2.name);//Tom
		p2.age=10;
		System.out.println(p1.age);//10
		
	}
	
}

class Person
{
	//属性
	String name;
	int age=1;
	boolean isMale;
	//方法
	public void sleep()
	{
		System.out.println("We can sleep");
	}
	public void eat()
	{
		System.out.println("We can eat");
	}
	public void talk(String language)
	{
		System.out.println("We can talk with "+language);
	}
}

package OOPpreliminary;
/**
 * 
 * @Description
 * 类中属性的使用
 * 属性(成员变量)vs局部变量
 * 相同点:
 * 1.定义变量的格式相同
 * 2.先声明后使用
 * 3.变量都有对应作用域
 * 不同点:
 * 	1.在类中声明位置不同
 *   属性:直接定义在类的一对{}中
 *   局部变量:生明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量
 *  2.关于权限修饰符的不同
 *   在声明属性时可以指明其权限,用权限修饰符
 *   常用权限修饰符:private、protected、public、缺省(没写)-->封装性
 *   局部变量:不可以使用权限修饰符
 *  3.默认初始化值
 *   属性:与数组时默认初始化值相同
 *   局部变量:没有默认初始化值
 * 	 特别的,形参在调用时赋值即可
 * 
 * 	4. 在内存中加载的位置不同 
 *   属性:加载在堆空间中(非static)
 *   局部变量:加载在栈空间中
 *   
 *  虚拟机栈:平时所说的栈,局部变量加载在栈中
 *  堆:将new出来的结构(数组、对象)加载在堆空间中,对象的非static的属性加载在堆空间中
 *  方法区:类的加载信息、常量池、静态域
 * @author 
 * @version 
 * @date 2021年12月3日上午9:33:09
 */
public abstract class UserTest 
{
	public static void main(String[] args) {
		User u1=new User();
		System.out.println(u1.age);//0
		System.out.println(u1.name);//null
		System.out.println(u1.isMale);//false
	}
}
class User
{
	String name;
	int age;
	boolean isMale;
	public void talk(String language)//形参
	{
		System.out.println(" We use the"+language+"to talk ");
	}
	public void eat()
	{
		String food="烙饼";//局部变量
		System.out.println("The north people in China like eating"+food);
	}
} 
package OOPpreliminary;
/**
 * 
 * @Description
 * 类中方法的声明和使用
 * 编译完成以后,生成一个或者多个字节码文件,使用JVM中类的加载器和解释器对生成的字节码文件进行解释运行,将字节码文件对应的类加载到内存中,涉及到内存解析
 * @author 
 * @version 
 * @date 2021年12月3日上午10:08:39
 * 方法: 描述类应该具有的功能
 * 如:Math.sqrt()、Math.random()
 * 	  Scanner.nextXxxx();
 * 	  Arrays.toString();Arrays.binarySearch();Arrays.sort();Arrays.equals();
 * 方法的声明:权限修饰符 返回值类型 方法名(形参列表(int a,int b)){方法体}
 *    static、final、abstract来修饰方法
 *    1.权限修饰符:private、public、缺省、protected-->封装性
 *    2.返回值类型:有返回值vs无返回值
 *    	如果方法有返回值,必须在方法声明时,指定返回值类型,在方法中要用return返回指定的返回值类型变量和常量
 *      如果方法没有返回值,声明时用void,一般不需要return,若使用,可以只用 return; 表示结束方法
 *    3.方法名:标识符,自主定义,见名知意
 *    4.形参列表:
 *     格式:数据类型1 形参1,数据类型2 形参2
 *    5.方法体:方法功能的体现
 *       
 *    
 *    return关键字的使用
 *    使用在方法体中
 *    作用:
 *    	 1).结束方法
 *   	 2).针对于有返回值类型的方法: return 数据; 返回所要数据
 *   	 3).return关键字后面不能有执行语句
 *    方法的使用:方法的使用可以调用当前类的属性、当前类中的方法
 *    自己调自己:递归
 *    方法中不可以定义新的方法	
 */
public class CustomerTest 
{
	public static void main(String[] args) {
		Customer c1=new Customer();
		c1.name="Tom";
		String customerName=c1.getName();
		System.out.println(customerName);
		c1.sleep(8);
		
	}
}
class Customer
{	//属性
	String name;
	int age;
	boolean isMale;
	//方法
	public void eat()
	{
		System.out.println("客户吃饭");
		return;
		//System.out.println("hello"); return后不可以再执行其他操作
	}
	public String getNation(String nation)
	{
		return nation;
	}
	public  String getName()
	{
		return name;
//		public void swim()
//		{
//			
//		}不可以方法里定义方法
	}
	public void sleep(int hour)
	{
		System.out.println("一般睡"+hour+"个小时");
		eat();
	}
	
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值