Java六七章复习

目录

面向对象的基础认识

2-1 介绍类与对象

2-2 IDEA 创建类与对象

2-3 成员变量

2-4 方法的作用

面向对象特性之封装

3-1 包-package

3-2 访问修饰符

3-3 面向对象特性之封装

3-4 对成员变量进行读写封装

面向对象特性之继承和多态

4-1 面向对象特性之继承

4-2 面向对象特性之多态

4-3 ArrayList 列表类的使用

面向对象的基础认识

2-1 介绍类与对象

2-2 IDEA 创建类与对象

2-3 成员变量

2-4 方法的作用

面向对象特性之封装

3-1 包-package

3-2 访问修饰符

3-3 面向对象特性之封装

3-4 对成员变量进行读写封装

面向对象特性之继承和多态

4-1 面向对象特性之继承

4-2 面向对象特性之多态

4-3 ArrayList 列表类的使用


面向对象的基础认识

理解生活中的类与对象    介绍面向对象编程     使用Java创建类与对象

2-1 介绍类与对象

类和对象的关系:1. 类是抽象概念,是对象的模板         

2. 对象是具体的事物,是类的具体实例

面向对象编程:1. 面向对象编程是利用编程方式体现出现实中的类与对象 

2. 从已有现实的类中定义程序的类(class)

3. 从类(class)创建(实例化)具体的对象(Object)

Java创建类的语法:

public 类名{

// 类的内容

}

eg: 1. 类要有直白意义,最好是英文

2. 首字母要大写: Dog, BigDecimal

3. 不要数字开头,不要特殊字符

public Dog{

// 类的内容

}

  创建类的实例对象

类  对象名 = new 类名();

Dog duoduo = new Dog() ;

Dog lucky = new Dog() ;

new关键字是创建实例对象最重要的标志 

对象的命名规则

Person first = new Person () ;

Cup smallcup = new Cup () ;

 注意 :

1. 对象名要有直白意义,最好是英文

2. 首字母要小写: sam,  firstItem

3. 不要数字开头,不要特殊字符

2-2 IDEA 创建类与对象

public class Dog {//创建类名
	public static void main(String[] args)   {  //主方法
		Dog duoduo = new Dog;
		Dog lucky  = new Dog;
		
	}

}
 

2-3 成员变量

1. 成员变量就是隶属于对象的变量

2. 成员变量用于保存对象的静态特征

3. 同类型的不同对象拥有相同的成员变量,但值彼此独立

成员变量的定义:宠物犬具有姓名,年龄,体重等特征。

public class Dog {

String name;

int  age;

float weight;

}

成员变量的使用: 

一、 

Dog duoduo = new dog();

duoduo.name = "多多";

duoduo.age = 6;

duoduo.weight = 13.5f;

Dog lucky = new Dog();

lucky.name = "多多";

lucky.age = 3;

lucky.weight = 10.2f;

 二、

System.out.println(duoduo.name + "今天" + duoduo.age + "岁了") ;

System.out.println(lucky.name + "体重" + lucky.weight + "千克") ;

float weight
public static void main(String[] args)  {//主方法
           Dog duoduo = new Dog();
           duoduo.name = "多多";
           duoduo.age = 6;
           duoduo.weight = 13.5f;
           Dog lucky = new Dog();
           lucky.name = "多多";
           lucky.age = 3;
           lucky.weight = 10.2f;
           System.out.println(duoduo.name + "今天" + duoduo.age + "岁了") ;//输出信息
           System.out.println(lucky.name + "体重" + lucky.weight + "千克") ;//输出信息

2-4 方法的作用

方法(Method)是用来完成某种特定功能的整段代码

int a = 10 ;

if (a % 2 == 0)  {

System.out.println(a + "是偶数") ;

} else {

System.out.println(a + "是奇数") ;

}

int b = 5 ;

if (b % 2 == 0)  {

System.out.println(b + "是偶数") ;

} else {

System.out.println(b + "是奇数") ;

}


public class MethodSample01 {
    public String isOddNumber(int num) {
        if (num % 2 == 0) {  //如果num输入除于2为0,那么输出偶数
            return "偶数";
        } else {    //如果num输入除于2不为0,那么输出奇数
            return "奇数";
        }
    }
        public static void main(String[] args){
        int a = 10;
        if (a % 2 == 0) {   //如果a输入除于2为0,那么输出偶数
            System.out.println(a + "是偶数");
        } else {   //如果b输入除于2不为0,那么输出奇数
            System.out.println(a + "是奇数");
        }
        int b = 5;
        if (b % 2 == 0) { //如果b输入除于2为0,那么输出偶数
            System.out.println(b + "是偶数");
        } else {   //如果b输入除于2不为0,那么输出奇数
            System.out.println(b + "是奇数");
        }
   }
}



面向对象特性之封装

3-1 包-package

特点:1. 把功能相似或相关的类组织在同一个包中

2. 包也采取了树形目录的存储方式

3. 通过包也可以限定类的访问权限

图示理解:

 ui : 是界面的意思,代表的是包的职责

 包的命名规范 :

1. 包名用"逆域名法"进行命名,用 " . " 分割 ,单词全部小写

2. 标准格式:域名后缀。 组织机构名。项目名[.模板名]. 包的职能 

eg :

3-2 访问修饰符

 Java创建类的语法:

public class 类名 {

}

 访问修饰符 

 import用于跨包来进行导入。

3-3 面向对象特性之封装

封装: 1. 封装即隐藏功能的实现细节

2. 利用对象与方法是实现封装的直接途径

3. 良好的封装让代码更容易阅读与维护

用代码理解封装:假设公司让李四(小白)输入5个数,使这5个数升序排列,身为小白,于是张三(大神)曾经做过,便把类给张三用。

解析题目:李四将张三代码嵌入到自己的工程中(图1),但是李四并完全看不懂张三写的算法,but不重要,因为作为李四他只是一个使用者,会调用这个方法 public void sort(int a, int b, int c, int d, int e) 即可,作为当前的sort方法只需要插入五个数字便能在控制台中打印升序结果,一切都是由张三通过sort方法进行的封装,李四只需要创建一个全新的Java类Sorter,然后在sort的算法进行实例化,然后调用算法的sort方法,根据程序要求随意传入5个字(图2)。

1.
package com.imooc.objectproject.sample3;

//张三开发的排序算法类
public class Algorithm {  //创建类名
	/**
	 * 传入五个数,把控制台打印升序结果
	 * @param a 第一个数
	 * @param b 第一个数
	 * @param c 第一个数
	 * @param d 第一个数
	 * @param e 第一个数
	 */
	public void sort(int a, int b, int c, int d, int e)  { 
		//冒泡排序算法
		int [] arr = {a,b,c,d,e};
		for(int i = 0; i < arr.length - 1; i++)  {
			for(int j = 0; j < arr.length - 1 - i; j++) {
				if(arr[j] > arr[j+1])  {
					int temp = arr[j];
		     }
	      }
		}
		for(int i = 0;i < arr.length; i++) {
			System.out.print(arr[i] + " ");//输出结果
		}
	}
}
2.
package com.imooc.objectproject.sample3;

public class Sorter {//创建类名

	public static void main(String[] args)  {//主方法
		Algorithm algorithm = new Algorithm();//对sort方法进行实例化
		algorithm.sort(a:177,b:91,c:37,d:66,e:102);//调用sort方法
		}
}

解析封装过程:作为李四来说实际上就输入了图2两句代码便完成了工作。其本质和猪肉变成火腿肠同理,图1 算法类Algorithm 相当于一个处理工厂,对于Algorithm 里面的处理过程并不关心,他只需要将数据传入后得出升序结果。意思就是张三对排序进行了封装(有点:把常见的排序方法单独的封装,只需要调用需要的内容;但有一天由更好的方法,张三只需在方法内部修改,作为使用者来说完全无感知,李四只需维护使用者的代图2,张三秩序维护服务提供者的代码图1,各司其职)。 

3-4 对成员变量进行读写封装

所谓封装也就是对象和方法隐藏类的实现的细节。

通过代码来说明对成员变量进行读写封装是说明意思。

package com.imooc.objectproject.sample3;

public class MobileNumber {
	//c成员变量私有变化
	// 1 related problem
	public String owner; //代表手机的所用者
	//  1 related problem
	public String areaCode = "86"; //国家区号
	public long mobilenumber; //手机号
	//getter方法,getter方法读取成员变量的内容
	//getter书写格式: public 成员变量类型get 成员变量名(), PS:首字母大写
	public String getOwner() {
		// this 关键词代表当前对象的...
		return this.owner;
	}
	//setter方法,setter方法用于设置成员变量的内容
	//setter书写格式:public void set 成员变量名(新的数据参数)
 	public void setOwner(String owner) {
 		this.owner = owner;
 	}
    public String getAreaCode() {
    	return this.areaCode;
    }
    public long getMobileNumber() {
    	return mobileNumber;
    }
    public void setMobileNumber(long mobileNumber) {
        this.mobilenumber = mobileNumber;
    }
}   

  
package com.imooc.objectproject.sample3;

public class MobileNumberTestor {//创建新类
	MobileNumber mobilnumber = new MobileNumber();//对Mobile进行实例化,产生MobileNumber对象
	//mobileNumber.owner = "老齐";//在mobileNumber中的成员变量进行设置
	//mobileNumber.areaCode = "84";
	mobileNumber.setOwner("老齐");
	String owner = mobileNumber.getOwner();
	System.out.println(owner);//输出信息
	String areaCode = mobileNumber.getAreaCode();
	System.out.println(areaCode);//输出信息
    mobileNumber.setMobileNumber(133888888881);//输出信息
    }
}

老齐

84 

面向对象特性之继承和多态

4-1 面向对象特性之继承

图例:面向对象特性之继承

 

 图解:1

package com.imooc.objectproject.sample4;

public class Mark1 {//创建类
	protected String title; //定义成员变量
	protected String color; //定义成员变量
	protected String moive; //定义成员变量
	public void description() {  //描述信息
         System.out.println("型号: "+ title);//输出信息
         System.out.println("颜色: "+ color);//输出信息
         System.out.println("首次出现电影: "+ movie);//输出信息
    }
    private void fire() {  //调用fire 方法
	      System.out.println ("利用手臂燃料迸射出火焰"); /输出信息
    }
    public static void main(String[] args) {  //主方法
	Mark1  mark1 = new Mark1(); //对Mark1进行实例化
	mark1.color = "银灰色";//对Mark1进行赋值
	mark1.movie = "钢铁侠1";//对Mark1进行赋值
	mark1.title = "马克1型";//对Mark1进行赋值
	mark1.description(); //调用mark1.description进行描述信息
	mark1.fire(); //调用mark1.fire进行喷火
	
  }
}

2. 

package com.imooc.objectproject.sample4;
//extends关键字用于类的继承
//extends关键字后面是“父类”,extends关键字前是“子类”
//子类会继承父类的(default)/protected/public 修饰的成员变量与方法
public class Hulk extends Mark1{  //创建类 Hulk子类继承 Mark1父类
	public static void main(String[] args) {//主方法
	 Hulk.hulk = new Hulk(); //对hulk进行实例化
	 hulk.title = "反浩克装甲";//对hulk进行赋值
	 hulk.color = "红色"; //对hulk进行赋值
	 hulk.movie = "复仇者联盟3"; //对hulk进行赋值
	 hulk.description(); //调用hulk1.description进行描述信息
  }
}

 3

package com.imooc.objectproject.sample4;
//extends关键字用于类的继承
//extends关键字后面是“父类”,extends关键字前是“子类”
//子类会继承父类的(default)/protected/public 修饰的成员变量与方法

public class Mark85 extends Mark1 { 创建类Mark85子类继承Mark1父类
    private void createShield() {
System.out.println("利用纳米技术生成防御护盾")
	public static  void main(String[] args) {//主方法
		Mark85 mark85 = new Mark85();  //对Mark85进行实例化
		mark85.title = "马克85型";     //对Mark85进行赋值
		mark85.color = "红色";         //对Mark85进行赋值
		mark85.movie = "复仇者联盟4";  //对Mark85进行赋值
		mark85.description();		  //调用Mark85.description进行描述信息
        mark85.createShield();        //调用Mark85.createShield进行描述信息
	
	}
}

4-2 面向对象特性之多态

多态的特点:

 eg : 通过程序模拟项目案例

package com.imooc.objectproject.sample5.system;

public class Chinese implements Language { //implements 即实现
      @Override
      public void voice() {//生成接口定义
    	  System.out.println("你好,请问有什么可以帮到您的?");
    	  
      }
}
package com.imooc.objectproject.sample5.system;

public class English implements Language {//创建类名
	@Override
	public void voice() {
		System.out.println("Hi,may I help you?");
	}

}

package com.imooc.objectproject.sample5.system;

public class CustomerService { //创建类名
		public Language contact(int areaCode) {
			if(areaCode == 86) {
				return new Chinese();
		    }else if(areaCode == 33) {
		    	return new English();  //if ...... else 封装
		    	
		    }
			return null;
		}
        public static void main(String[] args, int areaCode86) {//主方法
		Language language = new English(); //对English进行实例化
		language.voice();//对language 进行调用
		Language language1 = new Chinese(); //对 Chinese 进行实例化
		language1.voice();//对language 进行调用
		CustomerService cs = new CustomerService();
		Language language2 = cs.contact(areaCode86);
		language2.voice();//对language 进行调用
	}

}

 模拟介入客服中心的过程:

package System5.customer;

import com.imooc.objectproject.sample5.system.CustomerService;
import com.imooc.objectproject.sample5.system.Language;
public class Customer {
	public static void main(String[] args)  {
		CustomerService customerService = new CustomerService();
		Language language = customerService.cintact(areaCode:86);
	    language.voice();
	    
	}

}
 

Language :本题中的接口 Language language 而不是具体的类的名字(eg : English language) 

4-3 ArrayList 列表类的使用​​​​​​​​​​​​​​

package com.imooc.objectproject.sample6;

import java.util.ArrayList;
import java.util.List;

public class ArrayListSample { //创建类名
    public static void main(String[] args) { //主方法
    	//泛型
    	List<String> bookList = new ArrayList<String>();
    	bookList.add("红楼梦");
    	bookList.add("西游记");
    	bookList.add("水浒传");
    	bookList.add("三国志");
		bookList.add(index: 0,element: "镜花缘");
    	System.out.println(bookList); //输出信息
    	String bookName = bookList.get(2);
    	System.out.println(bookName); //输出信息
    	int size = bookList.size(); //进行实例化
    	System.out.println(size); //输出信息
        bookList.out.println(bookList);
        bookList.romove(index:bookList.size() - 1);
        System.out.println(bookList); //输出信息
        for(String book : bookLIST) {
        system.out.println("《" + bookList +"》"); //输出信息
   
    }
}

 

 

 

​​​​​​​

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值