java的相关了解博客:答疑

https://www.cnblogs.com/aishangJava/p/6862917.html

一.构造方法

1.构造方法只能被编译器调用一次,并且是在创建对象时

2.任何一个类都有,如果未定义,系统会自动默认一个无参的构造方法

3.构造方法的方法名应与类名一致,无返回类型,允许重载

4.创建一个子类对象,会自动先调用父类对象的构造方法,再是子类自身的构造方法。(这并不是创建了两个对象,其实只有一个子类对象;之所以需要调用父类的构造方法是因为在父类中,可能是因为在父类中,可能存在私有属性需要在其构造方法内初始化;)

对于Java开发人员来说,这是一个很常见的编译错误:

"Implicit super constructor is undefined for default constructor. Must define an explicit constructor"

例如下面的代码例子:

class Super{
String s;
public Super(String s){
this.s=s;
}
}

public class Sub extends Super{
int x=200;
public Sub()
{
System.out.println("Sub");
}
public static void main(String[] args){
Sub s=new Sub();
}
}

之所以出现这个编译错误,是因为父类的默认构造方法未定义。在Java中,如果一个类没有定义构造方法,编译器会默认插入一个无参数的构造方法;但是如果一个构造方法在父类中已定义,在这种情况,编译器是不会自动插入一个默认的无参构造方法,这正是以上demo的情况;

对于子类来说,不管是无参构造方法还是有参构造方法,都会默认调用父类的无参构造方法;当编译器尝试在子类中往这两个构造方法插入super()方法时,因为父类没有一个默认的无参构造方法,所以编译器报错;

要修复这个错误,很简单:

1、在父类手动定义一个无参构造方法:

public Super(){
System.out.println("Super");
}

2、移除父类中自定义的构造方法

3、在子类中自己写上父类构造方法的调用;如super(value);

我说一下我的理解:
首先看main函数,创建了一个Sub型的变量s,但是构造方法是这种的类型Sub(),然后看Sub类中,确实存在Sub()类型的构造函数(注明:即使不存在,系统应该也会有自定义一个无参构造方法),子类的构造方法没错,错在父类那里,
之前说了子类一定会引用到父类的构造方法,看父类,也定义了构造方法Super(String s),这就是问题,由于父类自身定义了构造方法,所以系统可能不会去再定义一个无参构造方法,但是这与子类的构造方法不一致(子类是无参,
其所需要的父类构造方法也应是无参的),就是父类与子类构造方法不一致。 

在子类构造方法中,不管是程序员手动调用父类构造方法还是编译器自动调用,

子类构造方法必须要调用父类的某个构造方法;

被子类调用的父类构造方法在父类中必须是存在的;

二.java低层建筑的变化不会影响上层建筑的运行

三.接口

1.作用接受所有实现类的实例,可去访问具体对象方法

2.可以继承,且允许多重j继承(因为接口里面什么都没有,多重继承也不会产生混乱的关系而导致错误)

3.比抽象类更抽象,不能有变量,只有常量(描述不变信息),不能有已实现方法。

4.接口来实现类的引用

四.异常

子类抛出异常比父类更细致(更小的一个点),且父类异常写在子类异常后面(即先写子类异常,后写父类异常),否则还没到子类异常,在父类异常那里直接被捕捉。

五.Circle p = new Circle();

其中p不是对象,是变量,是一个引用,与对象首地址有关

六.继承

方法重载:方法名相同,但参数列表不一致。

只要求参数的个数或参数的类型不一致就说两个函数是重载函数,而至于返回值是否一样,没关系。同时,重载可以发生在同一个类中也可以发生在继承关系中。

方法重写:方法名,返回类型,参数列表一致

七.抽象类

1.可包含抽象方法的类,但没有抽象方法的类也可为抽象类(这种一般定义为抽象类的原因是单纯不让它实例化,不能形成对象,也就是不能被new.

2.抽象类若需实例化,可交给它的非抽象子类

3.抽象类可看作是一个残类,功能不全。

4.抽象方法只有功能(方法)定义,没有功能(方法)实现,即抽象方法 abstract void f(); 抽象方法不能包含有任何方法的BODY 。

5.抽象类中可以有非抽象方法(非抽象方法是可以存在功能实现)。

private int i; // Storage allocated for each
public String what() { return "Instrument"; }
public abstract void adjust();
6.在abstract class方式中,Demo可以有自己的数据成员,也可以有非abstract的成员方法,
而在interface方式的实现中,Demo只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在interface中一般不定义数据成员),所有的成员方法都是abstract的。

八.向上转型,向下转型

向上转型:通俗地讲即是将子类对象转为父类对象。此处父类对象可以是接口

向下转型:即是把父类对象转为子类对象。父类引用复制给子类对象引用,但不一定成功,原因是编译器

具体理解可看:在java 中,什么叫向上转型

https://zhidao.baidu.com/question/176791556213151844.html

java课内容2019.3.1的更多相关文章

  1. java面试宝典2019(好东西先留着)

    java面试宝典2019 1.meta标签的作用是什么 2.ReenTrantLock可重入锁(和synchronized的区别)总结 3.Spring中的自动装配有哪些限制? 4.什么是可变参数? ...

  2. JAVA课设个人博客--多源数据教学管理系统

    JAVA课设个人博客--多源数据教学管理系统 1.团队课程设计博客链接 https://www.cnblogs.com/hq9-/p/10278470.html 2. 个人负责模块或任务说明 主要模块 ...

  3. 20155301第十一周java课栈程序

    20155301第十一周java课栈程序 内容一:后序表达式: abcde/-f+ 内容二:根据填充以下代码: import java.util.Scanner; public class MyDCT ...

  4. java课极限测试

    在临近国庆的9月30号补课日 碰到了惨绝人寰的java课极限测试 我从下午两点半做到晚上九点 不得不说人在烦躁的时候是真的没办法写代码的 根本不想思考也不想学习.最后的几个小时基本就是在叹息和坐着.也 ...

  5. 关于转入软件工程专业后第二次java课上作业的某些体会

    今天是第二周的java课. 自从转入了软件工程专业后,在我没有学习c++的基础上,直接开始了学习java的过程.不得不说过程很艰辛.今天下午老师让编写一个随机产生作业的软件.而我的基础差到都不知道如何 ...

  6. Java开源内容管理CMS系统J4CMS的几个样式

    www.j4cms.com java 开源内容管理 页面直接编辑 bootstrap3 样式 default 样式 metro 样式 oschina 样式 leblog 样式 foundation 样 ...

  7. JAVA课设---五子棋

    1.团队博客链接 JAVA课设-五子棋-团队博客 2.个人负责模块: ①对鼠标事件的处理 , 此模块需处理五子棋的放置问题.颜色转换问题.以及当五子连线时弹出窗口显示结果. ②对MainFrame中主 ...

  8. java课设数据库打包报错

    最近在交java课设时把东西打包给老师遇到许多奇葩问题, 首先是数据库复制时提示: 这是数据库与SQL server服务没有分离(我用的是SQLserver暂时,对于其他的,我以后会继续尝试)可以进行 ...

  9. 【转】JAVA输出内容打印到TXT以及不同系统中如何换行

    JAVA输出内容打印到TXT以及不同系统中如何换行 http://xiyang.09.blog.163.com/blog/static/59827615201172552755293/ 2011-08 ...

随机推荐

  1. Tensorflow学习练习-卷积神经网络应用于手写数字数据集训练

    # coding: utf-8 import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data mn ...

  2. [转]CSS块级元素和行内元素

    原地址:http://www.studyofnet.com/news/398.html 本文导读:HTML中的元素可分为两种类型:块级元素和行级元素.这些元素的类型是通过文档类型定义(DTD)来指明. ...

  3. General框架如何实现多数据库支持

    关于用C#实现多数据库支持的方式,大家都会多少了解,本文从General框架的开发思路角度详细介绍General框架实现多数据库支持的方式,使更多的人了解General框架的底层实现并得到所需的相关知 ...

  4. CF1063B Labyrinth

    大家一起膜Rorshach. 一般的$bfs$会造成有一些点访问不到的情况,在$system\ test$的时候会$WA40$(比如我……). 发现这张地图其实是一个边权只有$0/1$的图,我们需要计 ...

  5. java线程安全的元素

    集合类: Vector Stack HashTable enumeration 字符串: StringBuffer

  6. try-catch-finally 规则( 异常处理语句的语法规则 )

    1)  必须在 try 之后添加 catch 或 finally 块.try 块后可同时接 catch 和 finally 块,但至少有一个块. 2) 必须遵循块顺序:若代码同时使用 catch 和 ...

  7. CF 432B :Football Kit

    hash做法: #include<stdio.h> #include<string.h> ; int home[Max],away[Max],hash[Max]; int ma ...

  8. 关于集合的小demo

    /*1.分析以下需求,并用代码实现: (1)有如下代码: (2)定义方法统计集合中指定元素出现的次数,如"e" 3,"f" 2,"g" 4* ...

  9. delphi xe6 让 ListView 在 Android 可回弹[根据龟山阿卍原创修改为xe6版本]

    Delphi XE6 找出 FMX.Platform.Android.pas 档案,并复制到自己的 Project 路径里,找到 GetScrollingBehaviour 函数,修改成如下: uni ...

  10. Head First HTML与CSS(第2版) 中文pdf扫描版​

    是不是已经厌倦了那些深奥的HTML书?你可能在抱怨,只有成为专家之后才能读懂那些书.那么,找一本新修订的<Head First HTML与CSS(第2版)>吧,来真正学习HTML.你可能希 ...