面向对象(上)

面向对象(上)

   java面向对象学习三条主线
 * 1.java类及类的成员:属性、方法、构造器、代码块、内部类
 * 2.面向对象的三大特征:封装,继承,多态
 * 3.其他关键字:this,super,static,final,abstract,interface,package,import等
     

面向对象的三大特征

  • 封装
  • 继承
  • 多态

面向对象的思想概述

  • 类和对象是面向对象的核心概念

    类是对一类事物的描述,是抽象的,概念上的定义

    对象是实际存在的该类事物的每个个体,因此称为实例(instance)

    在java中万事万物皆对象

属性和方法

属性: 对应类中的成员变量

方法:对应类中的成员方法


package com.zx.oop;
/*
 * 类和对象的使用
 * 1.创建类,设计类成员
 * 2.创建类的对象
 * 3.通过对象.属性或对象.方法调用
 */
public class PersonTest {
	public static void main(String[] args) {
		//创建Person类的对象
		Person pe=new Person();
		
		//调用对象的属性和方法
        
		//对象.属性
		pe.name="Jack";
		pe.isMale=true;
		System.out.println(pe.name);
		
		//对象.方法
		pe.eat();
		pe.sleep();
		pe.spke("中国话");
	}
    
}

class Person{
	
	//属性
	String name;
	int age = 1;
	boolean isMale;
	
	//方法
	public void eat() {
		System.out.println("人可以吃饭");
	}
	
	public void sleep() {
		System.out.println("人可以睡觉");
	}
	
	public void spke(String language) {
		System.out.println("人可以说话,讲的话是"+language);
	}
	
}
运行结果:
Jack
人可以吃饭
人可以睡觉
人可以说话,讲的话是中国话


类的多个对象之间的关系

  在上面代码基础的pe.spke("中国话");的后面加上下面代码
     
        //重新new一个对象
        Person pe2=new Person();
        System.out.println(pe2.name);//默认值为null
        System.out.println(pe2.isMale);//默认值为false
        
        //pe的对象地址赋值给pe3,所以指向的是堆里面的同一个实体
        Person pe3=pe;
        System.out.println(pe3.name);
        pe3.age=99;
        System.out.println(pe.age);//所以pe.age也是99


类中的属性(成员变量)和局部变量

属性(成员变量)和局部变量

  1. 相同点:

    • 定义变量的格式是一样的
    • 先声明,后使用
    • 变量都有其作用域
  2. 不同点:

    • 成员变量: 在类体内定义的变量称为成员变量,它的作用域是整个类也就是说在这个类中都可以访问到定义的这个成员变量
    • 局部变量:声明在方法内,方法形参,代码块内,构造器形参,构造器内部的变量
    成员变量:在声明属性时,指明其权限,使用权限修饰符
    局部变量:不可以使用权限修饰符
    

    类的属性根据其类型都有自己的默认初始化值

    成员变量:
           整型(byte,short,int,long) 0
           浮点型(float,double) 0.0
           字符型(char) 0或"u0000"
           布尔型(boolean) false
           引用数据类型:null
    局部变量:
           必须在声明的时候初始化值,不然会编译报错,形式参数需要调用的时候才赋值,所以形参没有编译错误
    

    内存中加载的位置

    成员变量:加载到堆空间中(非static)
    局部变量:加载到栈空间中
    
    public class Demo10 {
        //成员变量
        static int num=100;
    
        public static void main(String[] args) {
            System.out.println(num);
            add();
        }
    
        //成员方法
        public static void add(){
            System.out.println("今天赚了"+num);
        }
    }
    
    public class Demo10 {
        public static void main(String[] args) {
            int i,j;//main方法里面定义的局部变量
            for (i=1;i<10;i++){
                for (j=1;j<=i;j++){
                    System.out.printf(j+"*"+i+"="+i*j+"	");
                }
                System.out.printf("
    ");
            }
            
            public void eat(){
                String food="鸡腿";
                System.out.print("李明喜欢吃"+food)//这里的food也是局部变量
            }
        }
    }
    

    方法

package com.zx.oop;
/*
 * 类中的方法声明和使用
 * 比如	:Math类:sqrt(),random()
 *       Scanner类 :nextInt()
 */
public class UserTest {
    public static void main(String[] args) {
		 User user=new User();
		 user.eat();
		 String where=user.getNation("中国");
		 System.out.println(where);
	}
}


//用户类
class User{
	//属性
	String name;
	int age;
	boolean isMale;
	

	/* 方法的声明
	 * 
	 * 权限修饰符 返回值类型 方法名 (形参列表 ){
	 *    方法体
	 * }
	 * 
	 * 返回值类型:为有或无,有的话就为其返回的数据类型,无的话写void
	 *
	 * 方法名:属于标识符,遵循标识符的规范和规则,"见名知意"
	 *
	 * 形参列表:方法可以声明0个,1个,或多个形参,以逗号分隔
	 * 
	 * return关键字的作用:
	 * 使用范围:方法体内
	 * 作用:结束方法。针对有返回值类型,使用"return 数据"方法返回所要的数据
	 * 
	 * 方法的使用中:
	 * 方法中可以调用当前类的属性或方法
	 * 方法
	 *
	 */
	
	//void 修饰的表示没有返回值的方法
	public void eat(){
		System.out.println("用户吃饭");
	}
	
	public void sleep(int hour){
		System.out.println("用户休息了"+hour+"小时");
	}
	
	
	/*
	 * String表示返回的数据类型为String类型,也可以是其他类型,在方法体中用return关键字返回,
	 * 如果没有返回值就用void修饰,通常没有返回值的方法就不用return,只能用"return;"结束方法
	 */
	public String getName() {
		return name;
	}
	
	//String nation是方法里面的形式参数
	public String getNation(String nation) {
		String info="我的国籍是"+nation;
		return info;
	}
}

写的博客是为了面试的时候快速复习,有的知识点疏漏了也可以通过博客查看,坚持学习,坚持写博客。
hmoban主题是根据ripro二开的主题,极致后台体验,无插件,集成会员系统
自学咖网 » 面向对象(上)