这一篇博客主要是对软工前一阶段学习的总结,主要是对Java的学习总结,包括三部分:Java的继承、多态和接口

Java的继承

继承是面向对象的三大特性之一,能够实现软件的复用。

Java子类继承父类的语法格式如下

class SubClass extends SuperClass
{
//类定义部分
}

Java继承的特点:

  • Java只有单继承,即每个子类都只有一个直接父类。
  • 子类继承父类,可以获得父类全部成员变量和方法
  • 子类不能获得父类的构造器

子类重写父类的方法

  • 子类和父类的方法名形参列一样
  • 方法的重写遵循“两小一大”的原则,即子类返回值类型应比父类返回值类型更小或相等;子类方法声明抛出的异常应比父类方法声明抛出的异常更小或相等;子类方法的访问权限应比父类方法的访问权限更大或相等
  • 当子类覆盖了父类方法后,子类的对象无法访问父类中被覆盖的方法,但可以在子类方法中调用父类中被覆盖的方法,使用super.方法名(被覆盖的如果是类方法, 则用父类类名)

调用父类构造器

  • 子类构造器调用父类构造器用super调用来完成,且必须出现在子类构造器执行体中的第一行
  • 父类构造器总是在子类构造器之前执行

下面是一个Java继承的简单例子,该例子中包含,类的继承、子类重写父类方法、super的使用


package example; class Person{
private String name;
private int age;
public Person(String name,int age){
this.name=name;
this.age=age;
}
public void setName(String name) {
this.name=name;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age=age;
}
public int getAge() {
return age;
} public void sayHello() {
System.out.println("Hello,I am "+name);
}
} class Student extends Person{
private int number;
private String school;
public void SetNumber(int number) {
this.number=number;
}
public int getNumber() {
return number;
}
public void setSchool(String school) {
this.school=school;
}
public String getSchool() {
return school;
}
public Student(String name,int age,int number,String school) {
super(name,age);
this.number=number;
this.school=school;
}
public void sayHello() {
System.out.println("I am a student of "+school+"and my name is "+getName());
} }
public class ExampleOfExtend {
public static void main(String[] args) {
Student stu=new Student("Xiao wang", 19, 123, "Fzu");
System.out.println(stu.getName());
System.out.println(stu.getAge());
System.out.println(stu.getNumber());
System.out.println(stu.getSchool());
stu.sayHello();
}
}

以上是我在学习Java继承中总结出来的一些知识点,还包括了自己写的一个例子。

Java的多态

Java允许把一个子类对象直接赋给父类引用变量,无需任何类型转换。如果子类对象赋给父类的引用变量,当运行调用该引用变量的方法时,其方法行为总是表现出子类方法的行为特征,而不是父类方法的特征,这就可能出现:相同类型的变量、调用同一个方法时呈现出不同的行为特征,这就是多态。

下面将结合一个例子来讲解多态

class BaseClass
{
public int book = 6;
public void base()
{
System.out.println("父类的普通方法");
}
public void test()
{
System.out.println("父类的被覆盖的方法");
}
}
class SubClass extends BaseClass
{
public String book = "Java";
public void sub()
{
System.out.println("子类的普通方法");
}
public void test()
{
System.out.println("子类的覆盖父类的方法");
} } public class ExampleOfPolymorphism {
public static void main(String[] args)
{
BaseClass pl= new SubClass(); //将子类对象赋给父类变量,可能发生多态
System.out.println(pl.book); //访问的是父类对象的实例变量
pl.base(); //将执行从父类继承到的base()方法
pl.test(); //将执行从子类的test()方法
// pl.sub();这一行代码编译时将会出现错误,因为pl的编译类型是BaseClass,BaseClass类没有提供sub方法
}
}

上面程序定义了一个BaseClass类,有一个变量book,两个方法:base和test;一个子类SubClass,有一个同名变量book,两个方法:sub、改写父类方法的test。在主函数中声明了BaseClass类型的po,但实际赋给这个变量的是SubClass类型。通过pl.book调用的是父类的变量,表明对象的实例变量不具有多态性。其他执行时所调用的方法已经写在代码注释上,不再赘述。

还有一点要提的是引用类型的转换。子类的对象可以直接赋给父类的引用变量,无需经过任何转型(向上转型)。如果要将一个父类对象转换成子类类型,则这个对象必须实际上是子类实例才行。

以上就是我在学习Java多态时的总结和自己写的一个例子。

java接口

接口里不能包含普通方法,接口里的所有方法都是抽象方法,接口是从多个相似类中抽象出来的规范。Java8对接口进行了改进,允许在接口中定义默认方法,默认方法可以提供方法实现。

Java中接口的定义

[修饰符] interface 接口名 extends 父接口1,父接口2...{
零到多个常量定义...
零到多个抽象方法定义...
零到多个内部类、接口、枚定义...
零到多个默认方法或类方法定义...//Only in java8
}

对比类定义,接口定义少了初始化块和构造器,且接口成员变量只能是静态常量(成员变量总是是public static final来修饰,可以省略),接口方法只能是抽象方法、类方法或默认方法(方法总是用public abstract来修饰,可以省略)。接口里的变量都必须指定初始值,接口里普通方法不能有方法体实现,类方法和默认方法必须有方法体实现。一个Java文件最多只能有一个public修饰的接口,如果定义了一个public接口,需与主文件名一致。

下面是一个简单的接口定义和继承的例子

interface interfaceA{
int a=5;
void testA();
}
interface interfaceB extends interfaceA{ //interfaceB继承了interfaceA
int b=6;
void testB();
} public class ExampleOfPolymorphism {
public static void main(String[] args)
{
System.out.println(interfaceB.a);
System.out.println(interfaceB.b);
}
}

以上是我学习Java接口中的一些总结和一个简单的例子。

总结

通过《软工》,自己在以前的基础上学习了Java,但是还是只停留在一个很浅的水平上,像Java的AWT编程和Swing编程还没学习,希望在接下去的半学期,自己能多多少少再学一些。

学习博客之Java继承多态接口的更多相关文章

  1. java JDK8 学习笔记——助教学习博客汇总

    java JDK8 学习笔记——助教学习博客汇总 1-6章 (by肖昱) Java学习笔记第一章——Java平台概论 Java学习笔记第二章——从JDK到IDEJava学习笔记第三章——基础语法Jav ...

  2. JAVA学习博客---2015.5

    上一次的学习博客写的和流水账差不多,有点生硬的和背目录一样,所以既然学习的目的是程序,那么这个月的学习博客就用程序来说点东西吧.这个月看了一些C和JAVA的视频,开始看别人写的程序,能看的懂但是自己去 ...

  3. JAVA学习博客---2015-8

    八月份的学习博客,今天已经是九月四号了,补上吧.现在我又回到C++了,JAVA的基本的东西都懂了,但是更好的掌握JAVA,我必须原路返回去学习C++,当初为了更快的学JAVA,其实我得C++都是跳着看 ...

  4. JAVA学习博客----2015.4

    这是开始写的第一篇学习博客,记录一下每个月的学习进度和掌握程度,因为这是第一次写学习博客而且已经看编程方面的书已经有几个月了,所以这一篇学习博客可能看似有些乱或者篇幅太长.从十二月的<程序员教程 ...

  5. php面向对象 封装继承多态 接口、重载、抽象类、最终类总结

    1.面向对象 封装继承多态  接口.重载.抽象类.最终类 面向对象 封装继承多态  首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...

  6. [转]有哪些值得关注的技术博客(Java篇)

    有哪些值得关注的技术博客(Java篇)   大部分程序员在自学的道路上不知道走了多少坑,这个视频那个网站搞得自己晕头转向.对我个人来说我平常在学习的过程中喜欢看一些教程式的博客.这些博客的特点: 1. ...

  7. 最值得收藏的java技术博客(Java篇)

    第一个:java_my_life 作者介绍:找不到原作者信息.大概做了翻阅全部是2012年的博客. 博客主要内容:主要内容是关于Java设计模式的一些讲解和学习笔记,在相信对学习设计模式的同学帮助很大 ...

  8. python学习博客地址集合。。。

    python学习博客地址集合...   老师讲课博客目录 http://www.bootcdn.cn/bootstrap/  bootstrap cdn在线地址 http://www.cnblogs. ...

  9. Java继承和接口

    接口最关键的作用,也是使用接口最重要的一个原因:能上溯造型至多个基础类.使用接口的第二个原因与使用抽象基础类的原因是一样的:防止客户程序员制作这个类的一个对象,以及规定它仅仅是一个接口.这样便带来了一 ...

随机推荐

  1. 怎么掌握微信小程序的取值、传值、数据存储

    小程序界面设定如下 父级页面:A界面 子级页面:B界面 异级页面:C界面 一.本页面取值(A界面→A界面) a.例如:input输入文字获取到value(键盘输入时触发) wxml: <inpu ...

  2. Socket编程 - 网络基础知识

    API编程部分:http://www.cnblogs.com/Jimmy1988/p/7895213.html 1. 协议简介 此处,我们主要介绍Linux编程常用的三种协议(TCP/UDP/IP), ...

  3. 以中间件,路由,跨进程事件的姿势使用WebSocket

    通过参考koa中间件,socket.io远程事件调用,以一种新的姿势来使用WebSocket. 浏览器端 浏览器端使用WebSocket很简单 // Create WebSocket connecti ...

  4. mybatis-plus之Mapper CRUD接口和 Service CRUD 接口

    中文官网链接: https://mp.baomidou.com/guide/crud-interface.html

  5. WCF使用net.tcp寄宿到IIS中

    一.IIS部分 1. 安装WAS,如下图所示: 2. 网站net.tcp协议绑定,如下图所示: 3. 网站启用net.tcp,如下图所示: 二.WCF代码部分 1. DesignCaseService ...

  6. Django基础必备三神装(HttpResponse、render,、redirect)

    在使用三神装的时候,首先当然是得要导入它们: from django.shortcuts import HttpResponse, render, redirect 1.HttpResponse 它是 ...

  7. YOLO object detection with OpenCV

    Click here to download the source code to this post. In this tutorial, you’ll learn how to use the Y ...

  8. Intel超低功耗CPU的一些信息

    2015年底: Intel Braswell是专门针对超低功耗移动和桌面平台的一个家族,现有赛扬N3000/N3050/N3150.奔腾N3700四款型号,其中N300的热设计功耗只有区区4W,其他三 ...

  9. 如何优雅使用Coursera ? —— Coursera 视频缓冲 & 字幕遮挡

    Coursera 视频缓冲 其实这个问题的根本是coursera上视频源d3c33hcgiwev3.cloudfront.net被墙,而ss的pac并未及时更新所导致的. 1 chrome 插件 - ...

  10. zTree创建quickSearch检索框

    <!--html元素----> <div id="plantTreeDiv" class="zTree-box treeZone"> & ...