java学习笔记-7-面向对象特征之继承和多态

1-面向对象特征之继承

如下给出继承实例:

package com.lixiuchun.test.sample04;

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.title = "马克1型";
        mark1.movie = "钢铁侠1";
        mark1.description();
        mark1.fire();
    }
}

package com.lixiuchun.test.sample04;

//extends关键字用于类的继承
//extends关键字后面是"父类",extends关键字前是"子类"
//子类会继承父类的(default)/protected/public修饰的成员变量与方法

public class Hulk extends Mark1{
    private  void repair(){
        System.out.println("弹射备件替换战损组件");
    }
    public static void main(String[] args) {
        Hulk hulk = new Hulk();
        hulk.color = "红色";
        hulk.movie = "复仇者联盟2";
        hulk.title = "反浩克装甲";
        hulk.description();
        hulk.repair();

    }

}

package com.lixiuchun.test.sample04;

public class Mark85 extends Mark1{
    private void createShield(){
        System.out.println("利用纳米技术生成防御护盾");
    }
    public static void main(String[] args) {
        Mark85 mark85 = new Mark85();
        mark85.color = "红色";
        mark85.movie = "复仇者联盟4";
        mark85.title = "马克85型";
        mark85.description();
        mark85.createShield();

    }
}

在上面代码中Hulk类和Mark85类继承于Mark1类。
在字类中可以使用父类中用protected和public修饰的变量和方法,在子类中不可以调用父类中用private修饰的变量和方法,在创建子类时使用extends修饰说明所继承与什么类。
如下:

public class Hulk extends Mark1{//Hulk类继承与Mark1类

}

2-面向对象特征之多态

1.多态是同一个行为具有多个不同表现形式或形态的能力。

实现多态的关键是接口

1.接口(Interface)是一个抽象的类型,只提供方法的·定义。
2.实现类是一个接口的具体是实现,要实现,每一个接口的方法的功能.。
接下来是一种接口的定义及实现实例展示:

在工程中新建Language.java

package com.lixiuchun.test.sample05;
//创建一个新的接口
public interface Language {
    //模拟各国语言的方法定义
    public void voice();//接口内的实验方法(当前未实现具体功能)其具体功能是对来自各国电话的问候

}

接下来新建名为Chinese.java、English.java、French.java的三个类对接口Language进行具体功能的实现。

package com.lixiuchun.test.sample05;

public class Chinese implements Language{//关键词implements是对所属接口的说明
    @Override
    public void voice() {//对接口Language中voice方法的一种实现
        System.out.println("你好,有什么可以帮到您的");//输出对中国人的汉语问候
    }
}

package com.lixiuchun.test.sample05;

public class English implements Language{

    @Override
    public void voice() {
        System.out.println("Hello,What can i do for you?");
    }
}

package com.lixiuchun.test.sample05;

public class French implements Language{

    @Override
    public void voice() {
        System.out.println(".............(模拟法语问候)");
    }
}

在同一包中创建名为CustomerService.java类进行接口Language三种实现的整合
在类中创建并实现public Language contact(int areaCode)方法通过areaCode的不同值返回相对应接口Language的具体实现方式。

public class CustomerService {

    public Language contact(int areaCode){
        if(areaCode == 86){
            return new Chinese();
        }else if(areaCode == 33){
            return new French();

        }else{
            return new English();
        }
    }

    public static void main(String[] args) {
//        Language personOne = new English();
//        personOne.voice();
//        Language personTwo = new Chinese();
//        personTwo.voice();
//        Language personThree = new French();
//        personThree.voice();


        CustomerService cs = new CustomerService();
        Language language1 = cs.contact(86);
        language1.voice();
        Language language2 = cs.contact(33);
        language2.voice();



    }
}

之后在不同包下创建类进行调用接口进行具体功能的实现

package com.lixiuchun.test.sample05.system;

import com.lixiuchun.test.sample05.CustomerService;
import com.lixiuchun.test.sample05.Language;

public class Customer {
    public static void main(String[] args) {
        CustomerService  customerService = new CustomerService();//实例化CustomerService对象
        Language language = customerService.contact(86);//通过对CustomerService对象方法的调用实现对接口Language不同情况下的实现
        language.voice();//此时输出结果为:你好,有什么可以帮到您的
    }
}

3-ArrayList列表类的使用

1.ArrayList是java内置的数据集合,用于储存多个数据。
2.ArrayList是数组替代品,提供了更多的数据操作方法。
3.ArrayList几乎是每个项目中必备的类。
以下通过实例进行ArrayList的使用说明:

package com.lixiuchun.test.sample06;

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(0,"镜花缘");//选择指定位置插入元素
        System.out.println(bookList);//对ArrayList内容进行输出
        String bookName = bookList.get(2);//调出bookList内第3个元素也就是数组内下标为2的元素
        System.out.println(bookName);//输出
        int size = bookList.size();//返回bookList数组中的元素数量
        System.out.println(size);
        bookList.remove(2);//删除数组内下标为2的元素
        System.out.println(bookList);
        bookList.remove(bookList.size()-1);//移除最后一条数据
        for(String book:bookList){//遍历列表所有数据
            System.out.println("《" + book + "》");
        }

    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值