java基础第三十六篇 抽象类与抽象方法

 abstract关键字的使用:
 1.abstract:抽象的
 2.abstract可以用来修饰的结构:类、方法


 3. abstract修饰类:抽象类
        (1、 此类不能实例化
        (2、抽象类中一定有构造器,便于子类实例化时调用(涉及:子类对象实例化的全过程)
        (3、 开发中,都会提供抽象类的子类,让
子类对象实例化,完成相关的操作
 
  4.
abstract修饰方法:抽象方法
      1、 抽象方法只有方法的声明,没有方法体
      2、
包含抽象方法的类,一定是一个抽象类。反之,抽象类中可以没有抽象方法的。
      3、 若子类
重写了父类中的所有的抽象方法后,此子类方可实例化
            若子类
没有重写父类中的所有的抽象方法,则此子类也是一个抽象类,需要使用abstract修饰。

 

5 abstract使用上的注意点
 1、abstract不能用来修饰:属性、构造器等结构。
  
 2、abstract不能用来修饰私有方法、静态方法、final的方法、final的类。

例子:

package com.hao.zhi.lv.abstractTest1;

public abstract class Creature {
    public abstract void  breath();
}
package com.hao.zhi.lv.abstractTest1;

public abstract class Person extends Creature{
    String name;
    int age;

    public Person(){

    }
    public Person(String name,int age){
        this.name = name;
        this.age = age;
    }

    //抽象方法
    public abstract void eat();

    public void walk(){
        System.out.println("人走路");
    }



}
package com.hao.zhi.lv.abstractTest1;

public class Student extends Person{

    public Student(String name,int age){
        super(name,age);
    }
    public Student(){
    }

    public void eat(){
        System.out.println("学生多吃有营养的食物");
    }

    @Override
    public void breath() {
        System.out.println("学生应该呼吸新鲜的没有雾霾的空气");
    }
}

 

package com.hao.zhi.lv.abstractTest1;

public class AbstractTest {
    public static void main(String args[]){
    Student s1=new Student();
    s1.eat();
    s1.breath();

    }
}

 

 

参考来自尚硅谷

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
写出一个类People,并由该类做基类派生出子类Employee和Teacher。其中People类具有name、age两个保护成员变量,分别为String类型和整型,且具有共有的getAge()成员方法,用于返回age变量的值,并编写一个两个参数的构造函数。Employee类具有保护成员String变量employeeNo,Teacher类有String类型的teano和zc变量,并分别为两个子类编写一个无参的构造函数。若使两个子类正常的编译,请在父类中解决该问题。 public class Employee extends People{ protected String employeeNo ; //construct method Employee() { } } package Exercise1; public class People { protected String name ; protected int age ; //construct method People() { } People(String name,int age) { this.name = name ; this.age = age ; } //getAge public int getAge() { return this.age ; } } package Exercise1; public class Teacher extends People{ protected String teano ; protected String zc ; //construct method Teacher() { } } package Exercise1; public class MainTest { public static void main(String[] args) { // TODO Auto-generated method stub Employee em = new Employee(); em.age = 20; em.employeeNo = "1234560"; em.name = "Jim" ; System.out.println("Employee : name :"+em.name+"age:"+em.age+"emplyeeNo:"+em.employeeNo); Teacher tea = new Teacher(); tea.age = 26; tea.name = "Tom" ; tea.teano= "456"; tea.zc = "Go" ; System.out.println("Teacher : name :"+tea.name+"age:"+tea.age+"teano:"+tea.teano+"zc:"+tea.zc); } } 题目:判断101-200之间有多少个素数,并输出所有素数。 public class SuShu { public static void main(String[] args) { int m; int i; int k=0; for(m=1;m<=100;m++) { for(i=2;i<m;i++) { if((m%i)==0) { break; } } if(i==m) { k++; System.out.println(m); } } System.out.println("sushu you"+k); } } 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 import javax.swing.JOptionPane; public class Exer3 { public static void main(String[] args) { String s1 = JOptionPane.showInputDialog(" Input a string (s1>=10000 && s1<100000) :"); String s2 = new StringBuffer(s1).reverse().toString(); if(s1.equals(s2)){ JOptionPane.showMessageDialog(null,"yes"); }else{ JOptionPane.showMessageDialog(null,"no"); } } } 题目:打印出杨辉三角形(要求打印出10行 import java.util.Scanner; public class YHSanJiao { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Enter a data:"); int n = input.nextInt(); int[][] a = new int[n][n]; for(int i = 0; i<n ; i++){ for(int j = 0; j <=i;j++){ if(j==0||i==j) a[i][j]=1; else a[i][j] = a[i-1][j-1] + a[i-1][j]; System.out.print(a[i][j] + " "); } System.out.println(); } } } Enter a data:10 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 GradeDemo类中的checkAnswer方法实现不定项选择判分,具体要求如下: 1) 考生答案和正确答案相同(不考虑选项顺序),得5分。 2) 考生答案不全,得2分。 3) 考生答案中有错误答案,得0分。 部分示例如下: 正确答案 考生答案 得分 ABC ABC/ACB/BAC/CBA/BCA 5 ABC A/B/C/AB/AC/BC/CB/CA/BA 2 ABC D/AD/BD/CD/ABD/BCD/ACD/ABCD 0 请完成checkAnswer方法,根据正确答案和考生答案,返回得分。 String类的相关方法: public char charAt(int index):返回指定索引处的 char 值 public boolean equals(Object anObject):比较此字符串与指定的对象。 public int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引, 找不到返回-1 public String substring(int beginIndex, int endIndex):返回一个新的字符串,该 子字符串始于指定索引处的字符,一直到此字符串末尾。 public class GradeDemo { public static void main(String[] args) { String correctAnswer = "ACD"; String userAnswer = "AD"; int grade = checkAnswer(correctAnswer,userAnswer); System.out.println("本题的得分是 : " + grade); } public static int checkAnswer(String correctAnswer,String userAnswer){} public static boolean checkString(String correctAnswer,String userAnswer){} } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// import javax.swing.JOptionPane; public class CheckAnswer { public static void main(String[] args) { String correctAnswer = "ACD"; String userAnswer = JOptionPane.showInputDialog("考生答案为:"); userAnswer = userAnswer.toUpperCase(); int grade = checkAnswer(correctAnswer,userAnswer); System.out.println("本题的得分是: " + grade); } public static int checkAnswer (String correctAnswer,String userAnswer ){ if(correctAnswer.length()==userAnswer.length()){ if(checkString(correctAnswer,userAnswer)) return 5; else return 0; } else if(correctAnswer.length()>userAnswer.length()){ if(checkString(correctAnswer,userAnswer)) return 2; else return 0; } else return 0; } public static boolean checkString (String correctAnswer,String userAnswer ){ boolean m = true; for(int i = 0; i < userAnswer.length(); ++i){ if(correctAnswer.indexOf(userAnswer.charAt(i))==-1){ m= false; break; } } return m ; } }
目 录 第一章 JAVA入门 10 计算机语言发展史 10 机器语言 10 汇编语言 10 高级语言 10 其他高级语言 11 JAVA发展简史 12 JAVA为什么能够流行? 13 JAVA各版本的含义 13 JAVA技术体系架构 14 JAVA的特性和优势 14 JAVA应用程序的运行机制 15 JVM(JAVA VIRTUAL MACHINE) 16 Java运行时环境JRE(Java Runtime Environment) 17 JAVA语言应用范围 18 第一个JAVA程序 18 JAVA开发环境搭建 18 一个典型的JAVA程序的编写和运行过程 19 第一个程序常见错误 20 第一个JAVA程序的总结和提升 20 常用Java开发工具 20 常用dos命令 21 本章笔试作业 21 本章上机操作 21 第二章(1) 编程的基本概念 22 注释 22 标识符 22 关键字/保留字 23 变量(variable) 24 常量(Constant) 25 命名规则(规范) 25 基本数据类型(primitive data type) 26 整型变量 26 浮点型 27 字符型(2个字节): 28 boolean类型 29 运算符(operator) 29 二元运算符 29 一元运算符 30 布尔逻辑表达符 30 位运算符 30 扩展运算符 31 字符串连接符 31 三目条件运算符 31 运算符优先级的问题 31 自动类型转换 32 基本类型转化时常见错误和问题 33 方法 33 简单的键盘输入和输出 33 本章思考作业 34 上机操作 34 第二章(2) 控制语句 35 顺序结构 35 选择结构 35 if单选择结构 35 if-else双选择结构 35 If-elseif-else多选择结构 36 switch多选择结构 37 循环结构 39 While和dowhile的区别 41 For循环 42 break语句和continue语句 47 语句块 48 递归结构 49 本章作业 50 本章上机操作 51 第三章 JAVA面向对象程序开发 52 编程语言发展史 52 类和对象是如何产生发展的?如何进化的? 52 面向对象思想初步(OOP初步Object Oriented Programming) 53 面向对象编程的语言的三大特征简介 56 对象和类的概念 56 类和对象初步 57 测试类的定义方式 57 简单的学生类编写示例 58 内存分析 59 属性(field,或者叫成员变量) 59 引用类型 60 类的方法 60 对象的创建和使用 60 构造器(或者叫做构造方法,constructor) 60 垃圾回收机制(Garbage Collection) 63 方法的重载(overload),构造方法的重载 63 this关键字 65 static 关键字 66 静态初始化块(经常用来初始化类,加载类信息时执行!) 67 package 68 JDK中的主要包 68 import 68 eclipse的使用 69 继承(extend, inheritance) 70 为什么需要继承?继承的作用? 70 继承介绍 70 如何实现继承? 70 继承使用要点 71 Object类 72 toString方法 72 equals方法 73 super关键字 74 方法的重写(override) 74 隐藏/封装(encapsulation) 75 为什么需要封装?封装的作用和含义? 75 使用访问控制符,实现封装 76 封装的使用细节 76 多态(polymorphism) 76 为什么需要多态? 76 如何实现多态? 77 方法绑定(method binding) 77 静态绑定 77 动态绑定 77 多态的使用要点 78 对象的转型(casting) 79 final 81 抽象类 82 抽象类的使用要点 83 接口 83 为什么需要接口? 84 如何定义接口? 84 接口的本质探讨 84 接口使用要点 85 接口的多继承 86 面向接口编程 87 OOP更多应用 87 组合 87 内部类(innerclasses) 88 字符串(java.lang.String类)的使用 90 字符串相等的判断 92 思考作业 93 上机作业 94 第四章 异常机制 95 导引问题 95 异常(Exception)的概念 96 异常分类 96 Error 97 Error和Exception的区别 97 Exception 97 异常的处理办法之一,捕获异常 99 try块 99 catch 99 finally 100 try, catch,finally ,return 执行顺序 100 异常的处理办法之二,声明异常:

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随风而行无疾而歌

看官,觉得不错,奖励一下呗

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值