Java的6、7章复习

目录

一、面向过程与面向对象的区别

二、面向对象的基础认知

1、介绍类与对象

类和对象的关系

面向对象编程

Java创建类的语法

创建类的实例对象

2、IDEA创建类与对象

3、成员变量

 成员变量的定义

成员变量的使用

4、方法的作用

三、面向对象特性 之封装

1、包-Package

​编辑

2、访问修饰符

 封装

对成员变量进行读写封装

3、面向对象特性之封装 

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

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

 1、面向对象特性之继承

2、面向对象特性之多态

多态:

接口:

实现类:

3、ArrayList列表类的使用

一、面向过程与面向对象的区别

😀面向过程

        是根据事件的发展经过来进行编程,捋清问题的思路,分析出步骤,然后调用函数一步一步解决.面向过程只适用于简单思路

😀面向对象

        面向对象是以"对象"为中心的编程思想

二、面向对象的基础认知

1、介绍类与对象

类和对象的关系

😀类是抽象的概念,是对象的模板

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

面向对象编程

😀面向对象编程是利用编程方式体现出现实中类与对象

😀从已有现实的类中定义程序中的类(Class)

😀从类(Class)创建(实例化)具体的对象(Object)

Java创建类的语法

public class 类名{
    //类的内容
}

1、类名要有直白的意义,最好是英文。

2、首字母大写:Dog、Big Decimal。

3、不要数字开头,不要包含特殊字符。

创建类的实例对象

类名 对象名 = new 类名();

Dog duoduo = new Dog();
Dog lucky = new Dog();

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

2、IDEA创建类与对象

1、定义类名时,首字母要大写,之后的每个有意义的单词也要大写;

2、定义对象名是,首字母要小写,之后的每个有意义的单词也要大写;

public class Dog {
    public static void main(String[] args) {
        Dog duoduo = new Dog();
        Dog Lucky=new Dog();
        Dog petDog=new Dog();
    }
}

 

3、成员变量

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

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

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

 成员变量的定义

public class Dog{
    String name;
    int age;
    float weight;
}

 

 

成员变量的使用

public class Dog {
    String name;
    int age;
    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";
        lucky.age = 3;
        lucky.weight = 10.2f;
        //输出信息
        System.out.println(duoduo.name+"今天"+duoduo.age+"岁了");
        System.out.println(lucky.name+"体重"+lucky.weight+"千克");
    }
}

 

 

 

4、方法的作用

 

 定义成员方法的语法格式如下:
[权限修饰符][返回值类型]方法名([参数类型 参数名])[throws 异常类型]{
…//方法体
return 返回值;

方法是用于完成特定功能的整段代码。通过对一段可以实现特定功能的代码进行简单的包装,形成方法,让程序可以反复去调用同一个方法,来反复实现这个功能。

package d6z;

public class MethodSample01 {
	 public String isOddNumber(int num){
	        System.out.println("原始数据为:"+num);
	        if(num%2==0){
	            return "偶数";
	        }else{
	            return "奇数";
	        }
	    }
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 /* 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+"是奇数");
        }*/

        //在mian使用方法,先创建对象才能使用
        int a=10;
        MethodSample01 methodSample01=new MethodSample01();
        String r1=methodSample01.isOddNumber(a);
        System.out.println(a+"是"+r1);
        int b=5;
        String r2=methodSample01.isOddNumber(b);
        System.out.println(b+"是"+r2);
	}

}

三、面向对象特性 之封装

1、包-Package

封装

封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想。

 

把功能相似或相关的类组织在同一个包中
    包也采用了树形目录的存储方式
    通过包也可限定类的访问权限

😀包的命名规范:
    包采用“逆域名法”进行命名 ,用“.”分割,单词全部小写。
    标准格式:域名后缀.组织机构名.项目名[模块名].包的职能
😀包中类的引用:
    1.跨包引用,在package包声明后加上import导入
    2.同一包下的不同类,在互相引用时不必导入

2、访问修饰符

 

访问修饰符用于控制类、成员变量、方法的访问范围

 封装

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

  2. 良好的封装代码更容易阅读和维护;

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

对成员变量进行读写封装

😀setter 设置成员变量的内容 无返回值 有参数  格式:public void set成员变量名(新的数据参数)

😀getter 读取成员变量的内容  有返回值 无参数  格式:public 成员变量类型 get成员变量名() 首字母大写  返回值用 return 接收

😀this关键字代表当前对象的。

//MobileNumber


package com.imooc.object.Sample3;

public class MobileNumber {
    private String owner;
    private String areaCode;
    private String mobileNumber;

    //getter方法,用于读取成员变量的内容
    //getter书写格式,public 成员变量类型 get 成员变量名(),PS:首字母大写
    public String getOwner() {
        //this关键字代表当前对象的...
        return this.owner;
    }

    public String getAreaCode() {
        //this关键字代表当前对象的...
        return this.areaCode;
    }


    //setter方法,setter方法用于设置成员变量的内容
//setter书写格式:public void set成员变量名(新的数据参数)
    public void setOwner(String owner) {
        this.owner = owner;
    }

    public void setAreaCode(String areaCode) {
        this.areaCode = areaCode;
    }
}

//MobileNumberTestor


public class MobileNumberTestor {
    public static void main(String[] args) {
        MobileNumber mobileNumber=new MobileNumber();
        mobileNumber.setOwner("老奇");
        String owner= mobileNumber.getOwner();
        System.out.println(owner);
        String areaCode=mobileNumber.getAreaCode();
        System.out.println(areaCode);
    }
}

 

3、面向对象特性之封装 

 

 

 现实中,肉类加工厂封装了加工的过程、苹果公司封装了芯片技术实现的过程等
概念:
封装就是隐藏功能的实现细节
对象和方法是实现封装的直接途径
良好的封装使代码更好的阅读和维护

好处一:把常见的排序算法都封装在一个类中,需要哪个就调用哪个。
好处二:使用者维护使用代码,服务提供者维护服务代码,两者互不影响。

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

//MobileNumber


package com.imooc.object.Sample3;

public class MobileNumber {
    private String owner;
    private String areaCode;
    private String mobileNumber;

    //getter方法,用于读取成员变量的内容
    //getter书写格式,public 成员变量类型 get 成员变量名(),PS:首字母大写
    public String getOwner() {
        //this关键字代表当前对象的...
        return this.owner;
    }

    public String getAreaCode() {
        //this关键字代表当前对象的...
        return this.areaCode;
    }


    //setter方法,setter方法用于设置成员变量的内容
//setter书写格式:public void set成员变量名(新的数据参数)
    public void setOwner(String owner) {
        this.owner = owner;
    }

    public void setAreaCode(String areaCode) {
        this.areaCode = areaCode;
    }
}

//MobileNumberTestor


public class MobileNumberTestor {
    public static void main(String[] args) {
        MobileNumber mobileNumber=new MobileNumber();
        mobileNumber.setOwner("老奇");
        String owner= mobileNumber.getOwner();
        System.out.println(owner);
        String areaCode=mobileNumber.getAreaCode();
        System.out.println(areaCode);
    }
}

 

setter 设置成员变量的内容 无返回值 有参数  格式:public void set成员变量名(新的数据参数)

getter 读取成员变量的内容  有返回值 无参数  格式:public 成员变量类型 get成员变量名() 首字母大写  返回值用 return 接收

this关键字代表当前对象的。。。

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

 1、面向对象特性之继承

private 私有的 private private private private  只能在当前类中使用 

public 公共的 public public public public public 不管什么地方都可以用

default 默认的 default defaullt default default default 可以在当前包的其他类中使用

protected 保护 protected protected protected protected 用在子类继承中和当前包的其他类中

类与类之间同样具有关系,如一个百货公司类与销售员类相联系,类之间的这种关系被称为关联。

extends只能继承 protected/public修饰的成员变量和方法,不能继承private修饰的成员变量和方法

package com.imooc.objectproject.sample1;

public class Mark1 {
   protected String title;
   protected String color;
   protected String movie;
   public void description(){
       System.out.println("型号:"+title);
       System.out.println("颜色:"+color);
       System.out.println("首次出现电影:"+movie);
   }
   private void fire(){
       System.out.println("利用手臂燃料泵射出火焰");
   }

   public static void main(String[] args) {
       Mark1 mark1=new Mark1();
       mark1.color="银灰色";
       mark1.movie="钢铁侠1";
       mark1.title="马克1型";
       mark1.description();
       mark1.fire();
   }
}

2、面向对象特性之多态

 上面介绍了继承,了解了父类和子类,其实将父类对象应用于子类的特征就是多态,多态的实现并不依赖具体类,而是依赖于抽象类和接口。

多态:

同一个行为具有多个不同的表现形式或形态的能力,根据输入的内容不同,去产生不同的接口实现

实现多态的关键是接口

接口:

是一个抽象的类型,只提供方法的定义

实现类:

是一个借口的具体实现,要实现每一个接口方法的功能

一个接口可以拥有多个实现类

3、ArrayList列表类的使用

ArrayList是Java内置的数据集合,用于存储多个数据

ArrayList是数组替代品,提供了更多的数据操作方法

ArrayList几乎是每一个项目中必用的类

 

 

 

 

 移除最后一本书

1、向列表添加数据

对象名.add();

对象名.add(索引位置,数据)// 像当前数组尾部添加数据

2、泛型:<>

List <数据类型> 对象名 = new ArrayList<数据类型>();

3、得到指定位置数据

对象名.get(索引位置);

4、获得列表的数值总数

对象名.size();

5、移除数据

对象名.remove(索引位置);

6、移除最后一项数据

对象名.remove(对象名.size()-1);

7、遍历列表所有数据

For( 数据类型 变量名 :列表名){

//循环体

}

package com.imooc.object.Sample6;

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

public class ArrayListSample {
   public static void main(String[] args) {
     //泛型<类型>,用于规范列表中的数据
       List<String> bookList=new ArrayList<String>();//创建ArrayList对象
       bookList.add("红楼梦");//向列表末端追加数据
       bookList.add("西游记");
       bookList.add("水浒传");
       bookList.add("三国志");
       bookList.add("index:0,element“镜花缘");
       System.out.println(bookList);
       String bookName=bookList.get(2);//得到指定索引位置(从0开始)
       System.out.println(bookName);
       int size=bookList.size();//得到列表总数
       System.out.println(size);
       bookList.remove(2);
       bookList.remove(bookList.size()-1);
       System.out.println(bookList);
       for (String book:bookList){
           System.out.println("《"+book+"》");
       }
   }
}
 

ArrayList 是数组 Array 的替代品,提供了更多的数据操作方法

使用add(0, xxx) 就可以在List的头部添加元素 

ArrayList 不强制要求存放在里面的数据都是同一类型的,但是最好保持同一类型

使用List<String>bookList = new ArrayList<String>(); 按照这样的格式写,对List里面的类型进行强制要求

<>里面表示的是泛型

bookList.get(2); //传入对应的索引,就可以用get

bookList.size(); //元素的数量

bookList.remove(2);

THE END!!!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是第十版Java教材第九章复习题的答案: 1. 什么是接口?如何声明一个接口? 接口是一种抽象数据类型,它定义了一组方法,但没有提供方法的实现。它只是指定了方法名、参数列表和返回类型。可以通过实现接口来提供方法的具体实现。 接口声明使用interface关键字,如下所示: ``` public interface MyInterface { public void method1(); public int method2(String str); } ``` 2. 什么是抽象类?如何声明一个抽象类? 抽象类是一个不能被实例化的类,它只能被继承。抽象类可以包含抽象方法和非抽象方法。抽象方法没有具体的实现,而是由子类提供实现。 抽象类声明使用abstract关键字,如下所示: ``` public abstract class MyAbstractClass { public abstract void method1(); public void method2() { // implementation } } ``` 3. 接口和抽象类有什么区别? 接口只能包含抽象方法和常量,而抽象类可以包含非抽象方法和属性。另外,类只能继承一个类,但可以实现多个接口。 4. 什么是函数式接口?如何声明一个函数式接口? 函数式接口是只包含一个抽象方法的接口。它们通常用于Lambda表达式和方法引用。 函数式接口声明使用@FunctionalInterface注解,如下所示: ``` @FunctionalInterface public interface MyFunctionalInterface { public void method(); } ``` 5. Lambda表达式是什么?如何使用Lambda表达式? Lambda表达式是一种匿名函数,它可以作为参数传递给方法或赋值给变量。它的语法如下: ``` (parameter1, parameter2, ...) -> expression ``` 例如: ``` Arrays.sort(names, (String s1, String s2) -> s1.compareTo(s2)); ``` 这个Lambda表达式定义了一个比较字符串的方法,并传递给Arrays.sort方法。 6. 方法引用是什么?如何使用方法引用? 方法引用是一种简化Lambda表达式的方式,它允许你引用已经存在的方法并将其作为Lambda表达式传递给方法或赋值给变量。它的语法如下: ``` ClassName::methodName ``` 例如: ``` Arrays.sort(names, String::compareTo); ``` 这个方法引用引用了String类的compareTo方法,并传递给Arrays.sort方法。 7. Stream是什么?如何使用Stream? Stream是一种在集合上进行复杂操作的方式。它提供了过滤、映射、排序等操作。Stream的操作可以是中间操作或终端操作。中间操作返回一个Stream对象,终端操作返回一个非Stream对象(如List、Map等)。 例如: ``` List<String> names = Arrays.asList("Alice", "Bob", "Charlie"); List<String> filteredNames = names.stream() .filter(name -> name.startsWith("A")) .collect(Collectors.toList()); ``` 这个代码使用Stream过滤以"A"开头的字符串,并将结果存储在List中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值