一、Java的类:

Java的类是Java的基本概念了,基本的定义语法我就不提了,自己也不会忘了的,下面分成几个模块介绍:

1、Java的类定义时候的修饰符

2、Java的类的继承与派生

二、Java类定义的时候的修饰符:

说白了其实基本上就是变量的一些修饰符,因为java没有类外的变量或者方法可以用

1、public、protected和private

 /*
第一类protected private public
public所有类可见
protected 包内的所有类和任何位置的子类可见
private 只在本类内可见
以上均可以修饰属性、方法 ,public可以修饰类,但是一个java文件只能有一个public类
*/
import java.io.*; class person{
public String pName;
private String pId;
enum Gender {Male,Female};
protected Gender pGender;
protected int pAge; person(String name,String id,int gender,int age) throws Exception{
this.pName = name;
this.pId = id;
if(gender == 0) {
this.pGender = Gender.Male;
}
else if (gender == 1) {
this.pGender = Gender.Female;
}
else {
throw new Exception("Gender Error!");
}
this.pAge = age;
} protected String getId() {
return this.pId;
} public void setName(String name) {
this.pName = name;
} private void sick() {
System.out.println("sick");
}
}

2、static静态变量(属性)与静态函数(方法)

静态指不依赖任何实例的变量或者方法,属于类的全体实例共享的,所以也不是独立的。如果有protected修饰就有点类似python里面的类变量,用public修饰就成了全局变量了,使用private修饰就成了带_ _的类变量了(但是其外部访问永远无法做到)。静态变量可以被静态与非静态方法调用。但是静态方法只能调用类中静态变量和自己参数中的变量。

 public static int a = 1;
private static int b = 2;
protected static int c = 3;
public static void run(){}
private static void run(){}
protected static void run(){}

3、final

final是只能被赋值一次的变量,只能被继承不能被重载的方法,和不能被继承的类(所有成员方法都是final方法)

 public final a = 1;//后面再也不能给a赋值了
public final void run(){}//子类可以继承但不能重载run方法
final class A{}//不能被继承的类,所有成员方法都是final方法

三、java的继承与派生

1、单继承

 import java.io.*;

 class person{
public String pName;
private String pId;
enum Gender {Male,Female};
protected Gender pGender;
protected int pAge; person(String name,String id,int gender,int age) throws Exception{
this.pName = name;
this.pId = id;
if(gender == 0) {
this.pGender = Gender.Male;
}
else if (gender == 1) {
this.pGender = Gender.Female;
}
else {
throw new Exception("Gender Error!");
}
this.pAge = age;
} protected String getId() {
return this.pId;
} public void setName(String name) {
this.pName = name;
} private void sick() {
System.out.println("sick");
}
} class student extends person{
private int sScore;
public String sSchool;
public int sLevel;
student(String name,String pid,int gender,int age,int score,String school,int level) throws Exception{
super(name,pid,gender,age);
this.sScore = score;
this.sLevel = level;
this.sSchool = school;
}
public void showinfo() {
System.out.println(this.pName);
System.out.println(this.getId());
System.out.println(this.pGender);
System.out.println(this.pAge);
System.out.println(this.sSchool);
System.out.println(this.sLevel);
System.out.println(this.sScore);
}
}

(1)知识点1:重载构造方法:

自己的变量自己管,父类的变量super()传。子类的构造函数参数要包含父类构造函数中的参数,并把父类的那部分参数传入super()进行调用。

(2)知识点2:

重载方法后优先使用重载的方法。

2、接口与抽象类:

(1)接口是一种特殊类:

 /*@Override是重载父类或者接口的修饰符,编译器识别到这个之后,可以在编译时帮助检查父类是否由此方法*/
interface jiekou{
//只能有静态全局常量public static final xxxx和抽象方法
}
/*
1、接口必须有子类
2、子类可以继承多个接口
3、接口中的子类如果不是抽象类,必须重写接口的所有方法
4、接口本身可以继承多个接口extends,接口不能继承抽象类和普通类
5、接口可以实例化但是必须通过子类的实例的反转实现
*/
//X类继承A和B两个接口
X x = new X();//实例化子类对象
A a = x;//向上转型
B b = x;//向上转型

(2)抽象方法与抽象类:

(2.1)延伸接口中的抽象方法的抽象概念,此概念也可以到抽象类

 abstract void func();

这就是一个方法的定义,只有函数的抽象概念没有实际的实现。必须要到子类中给与重载实现。

(2.2)抽象类:

 /*
抽象类:
1、拥有抽象函数的类就叫抽象类,与接口不同可以有普通的成员变量和方法,但是至少有一个抽象方法。
2、继承抽象泪的子类如果不是抽象类那么必须重载实现父类的抽象方法。所以抽象方法必须public或者protected的。
3、抽象类不能创建实例。
4、抽象类可以继承抽象类。
*/
abstract class ClassName {
abstract void fun();//至少有一个抽像函数;
}

(3)总结一下多继承:

(3.1)前提:

 #接口是一种特殊的抽象类(只有全局静态变量和抽象函数的抽象类)

#接口必须被继承才有用(不能直接实例化)

 #接口中的方法都必须重载后才能使用

#抽象类可以继承抽象类(只能继承一个,可以继承接口,可以继承多个)

#接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法

#抽象类必须继承才能用(不能直接实例化)

(3.2)多继承

#普通类可以继承普通类和抽象类(但是一个只能继承一个),可以继承接口(多个)。

#抽象类可以继承抽象类(一个),可以继承接口(多个)。

#接口可以继承接口(多个)

 interface A extends B,C{}
abstract class D{}
abstract class E extends D implements A,B,C{}
class F{}
class G extends F implements A,B,C{}
class H extends E {}

Java初学者笔记二:关于类的常见知识点汇总的更多相关文章

  1. Java初学者笔记

    Java初学者笔记 前提:认识汉字,认识英语单词,会用键盘打字 ------------------------------- 端口是什么: --------面向对象编程(OOP) 接口”(Inter ...

  2. Java初学者笔记一:元类、获取类型、枚举

    零.绪论: 2018年新年伊始,学习Java的冲动越来越强烈,毕竟以后无论是做安全开发还是安全研究都必不可少的掌握这门语言,所以在不断完善Python作为脚本语言的主语言的情况下觉得学习Java作为高 ...

  3. Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)

    第一讲     File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不 ...

  4. Java开发笔记(七十三)常见的程序异常

    一个程序开发出来之后,无论是用户还是程序员,都希望它稳定地运行,然而程序毕竟是人写的,人无完人哪能不犯点错误呢?就算事先考虑得天衣无缝,揣着一笔巨款跑去岛国买了栋抗震性能良好的海边别墅,谁料人算不如天 ...

  5. java学习笔记7--抽象类与抽象方法

    接着前面的学习: java学习笔记6--类的继承.Object类 java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) jav ...

  6. Java学习笔记二十一:Java面向对象的三大特性之继承

    Java面向对象的三大特性之继承 一:继承的概念: 继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类. 继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方 ...

  7. Java学习笔记二--API课堂记录

    JavaSE课堂记录(二) 第一节课 方法的重载:方法名相同,参数列表不同 方法的重写:方法名,参数列表相同 两同:方法名相同,参数列表相同 两小:访问权限小与等于父类,返回值类型小于等于父类(返回值 ...

  8. java新手笔记27 监听器类

    1.外部类监听 package com.yfs.javase; import java.awt.Button; import java.awt.FlowLayout; import java.awt. ...

  9. 【原】Java学习笔记031 - 常用类

    package cn.temptation; public class Sample01 { public static void main(String[] args) { /* * 类 Math: ...

随机推荐

  1. Java-jdbc连接简化类jdbcUtil

    在src文件夹下创建配置文件 db.properties db.properties drivername=com.mysql.jdbc.Driver url=jdbc:mysql://localho ...

  2. EasyUI-datagrid中load,reload,loadData方法的区别

    EasyUI比较常用,其中的datagrid比较复杂,它有其中有load,reload,loadData这三个方法,它们都有相同的功能,都是加载数据的,但又有区别. load方法,比如我已经定义一个d ...

  3. android 编译 app

    有些编写的app需要放到android的源码中进行编译.放置的路径packages/apps/ 编译方法,参考 http://blog.csdn.net/luoshengyang/article/de ...

  4. C++ 有用的书籍

    C++ 有用的书籍Essential C++ 中文版C++ Primer Plus 第6版中文版C++ Primer中文版(第5版) #include <iostream> /* run ...

  5. 在C语言中实现面向对象(2)

    C语言是结构化和模块化的语言,它是面向过程的.但它也可以模拟C++实现面向对象的功能.那么什么是对象呢?对象就是一个包含数据以及于这些数据有关的操作的集合,也就是包含数据成员和操作代码(即成员函数). ...

  6. Jquery实现选项卡功能

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. asp.net mvc清空指定cookies

    HttpCookie hc = Request.Cookies["user"];                hc.Expires = DateTime.Now.AddDays( ...

  8. 解决error: Your local changes to the following files would be overwritten by merge

    在项目里我们一般都会把自己第一次提交的配置文件忽略本地跟踪 1 [Sun@webserver2 demo]$ git update-index --assume-unchanged <filen ...

  9. 动态生成的DOM不会触发onclick事件的原因及解决方法

    最近朋友在做一个项目的时候,遇到动态加载微博内容,然后点击“展开评论”后获取该微博的所有评论.这里使用了动态加载的<span mid='123456789′ class='get_comment ...

  10. OpenCV学习:图像的载入和显示

    一.使用IplImage结构读取并显示图像文件: 运行结果: 二.使用Mat类读取并显示图像文件: 使用 Mat 类,内存管理变得简单,不再像使用 IplImage 那样需要自己申请和释放内存,而且一 ...