抽象类

Java基础及小总结

时光总嘲笑我的痴心妄想 提交于 2020-01-15 04:14:32
Java和C++一样,是面向对象的,面向对象的三大特征是:封装、继承和多态(也有人说面向对象的四大特征是:封装、继承、多态和抽象)。 Java把数据类型分为两种,即基本数据类型和引用数据类型。(基本数据类型包括:byte、short、int、long、float、double、char、boolean) 被static修饰的成员变量和成员方法可以通过类名直接访问。 外部类只能被public和default修饰;内部类可以有四种修饰,即public、protected、private和default(默认)。 Java类是单继承的,接口允许多继承。 构造方法: (1)构造方法也是类的方法,可以在创建对象时为成员变量赋值; (2)构造方法可以进行重载,但是参数列表必须不同,不以返回值和访问级别进行区分; (3)构造方法没有返回值; (4)构造方法一定要与定义为public的类同名; (5)构造方法不能被类调用,只能用new关键字创建对象。 访问控制修饰符 Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持 4 种不同的访问权限。 default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。 private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类) public : 对所有类可见

java abstract抽象类的讲解使用

烈酒焚心 提交于 2020-01-15 02:19:34
/* abstract:是一个修饰符 可以修饰方法,类 1.当我们多个类存在相同的功能,但是功能的主体不同,这时我们进行向上抽取 只抽取功能的定义不抽取功能的主体 抽象类的特点: 1.抽象方法一定要在抽象类中 2.抽象类和抽象方法必须要被abstract关键字修饰 3.抽象的类是不能被创建对象,因为调用抽象的方法没意义 4.抽象类中的方法要被使用,必须由子类重写抽象类中的方法 然后创建子类对象来调用 5.抽象类中可以定义非抽象的方法,有时我们需要此类不能被new关键字创建对象时, 可以用abstract将此类变成抽象类 6.子类如果只重写一部份的抽象方法,那么该子类还是一个抽象类,如果抽象类的方法 要被使用,子类必须重写抽象类中的所有方法。 值得注意:抽象类和普通的类没有太大的不同 1.抽象类无通过new关键字创建对象; 2.抽象类里面可有抽象的方法 */ abstract class Animal{ abstract void sing(); abstract void show(); } class Cat extends Animal{ void sing(){ System.out.println(“喵喵唱歌”); } void show(){} } class Dog extends Animal{ void sing(){ System.out.println(

java学习笔记8(继承 抽象)

…衆ロ難τιáo~ 提交于 2020-01-15 00:18:02
一、继承的好处 : 1 继承的出现提高了代码的复用性,提高了软件开发效率 2 继承的出现让类与类之间产生了关系,提供了多态的前提     注意事项:       在Java中一个类只能有一个直接的父类,例如:class A{}                            class B{}                             class C extends A,B{}(这种写法是错的)         可以通过多重继承来实现, 如:class A{}                       class B extends A{}                        class C extends B{} (这种写法是正确的)  3继承后子类父类成员变量的特点:     子类对像调用成员变量的时候,子类自己有,使用子类的,子类没有则调用父类的     当子类父类中出现了同名成员变量,通过this 关键字进行区分  例: public class Person { // 人的姓名年龄,成员变量 private String name; private int age; public void setAge(int a) { if (a < 0 || a > 100) { age = 20; } else { age = a; } }

Java最新面试题

99封情书 提交于 2020-01-14 19:17:37
2019最新整理JAVA面试题附答案 作者:Jack 包含的模块: 本文分为十九个模块,分别是:Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM 如下图所示: 共包含 208 道面试题,本文的宗旨是为读者朋友们整理一份详实而又权威的面试清单 ==================================================== 一. Java 基础模块 1.JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。 具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。 2.== 和 equals 的区别是什么

java设计模式-模板方法模式

可紊 提交于 2020-01-14 15:17:19
1.模板方法(Template Method)模式的定义 它定义一个操作中的算法的框架,而将一些步骤延迟到了子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些步骤。它是一种类行为型模式。 2.模板方法模式的优缺点 优点: 良好的封装性。把公有的不变的方法封装在父类,而子类负责实现具体逻辑。 良好的扩展性。增加功能由子类实现基本方法扩展,符合单一职责原则和开闭原则。 它在父类中提取了公共的部分代码,便于复用代码。 缺点: 对每个不同的实现都需要定义一个子类,这会导致类的个数增加,系统更加庞大,设计也更加抽象。 父类中的抽象方法由子类实现,子类执行的结果会影响父类的结果,这导致一种反向的控制结构,它提高了代码阅读的难度。 3.模板方法模式主要角色   3.1 抽象类 (Abstract Class):负责给出一个算法的轮廓和骨架。它由一个模板方法和若干个基本方法构成。这些方法的定义如下:     3.1.1 模板方法:定义了算法的骨架,按某种顺序调用其包含的基本方法。     3.1.2 基本方法:是整个算法中的一个步骤,包含以下几种类型:       抽象方法:在抽象类中申明,由具体子类实现。       具体方法:在抽象类中已经实现,在具体子类中可以继承或重写它。       钩子方法:在抽象类中已经实现,包括用于判断的逻辑方法和需要子类重写的空方法两种。   3.2

抽象类

扶醉桌前 提交于 2020-01-14 12:55:50
1.什么是抽象类   用关键字abstact修饰的类就成了抽象类。 2.抽象类的特征   (1)它不可以直接使用new来创建实例。   (2)若一定要new出实例则需要通过匿名内部类的方式实现所有抽象方法。   (3)一个实体类继承了抽象类则必须要实现抽象类的所有方法。 3.为什么要用到抽象类    (1)有些方法需要是抽象方法,同时抽象类提供了一种规范,那就是抽象类的子类必须要实现抽象类里的抽象方法,这在多人团队开发或者项目构建及其重要。   (2)有些类具有一些共同的特征,因此可以将这些特征抽取出来构成一个抽象类,其他类就可以通过继承来实现自己的功能。 来源: https://www.cnblogs.com/quanhaijie/p/12191357.html

java的修饰符

对着背影说爱祢 提交于 2020-01-14 07:29:15
Java的修饰符根据修饰的对象不同分为: 1.类修饰符 2.方法修饰符 3.变量修饰符 其中每种修饰符又分为 访问控制修饰 符和 非访问控制修饰符 1. 类修饰符 访问修饰符:公共类修饰符public(只有一种) 非访问控制符:抽象类修饰符 abstract 、最终类修饰符 final (1)公共类修饰符 public : Java 语言中类的访问控制符只有 public 即公共的。每个 Java 程序的有且只有一个类是 public,它被称为主类 , 其他外部类无访问控制修饰符 ,具有包访问性。 public class Test1 {} class Test2{} abstract class Test3{} final class Test4{} 注意:一个类的内部类可以被其他访问控制修饰符protected、default、private修饰,相当于类的成员。 (2)抽象类修饰符 abstract :用 abstract 修饰符修饰的类,被称为抽象类,在抽象类里不能创建实例,只能当成父类被继承。 (3)最终类修饰符 final :当一个类不能被继承时可用修饰符 final修饰为最终类。被定义为 final 的类通常是一些有固定作用、用来完成某种标准功能的类。 (4)类缺省访问控制符:如果一个类没有访问控制符,说明它具有缺省的访问控制符特性。此时

第九章 继承、抽象类

旧时模样 提交于 2020-01-14 05:04:31
继承 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如公司中的研发部员工和维护部员工都属于员工,程序中便可以描述为研发部员工和维护部员工继承自员工,同理,JavaEE工程师和Android工程师继承自研发部员工,而维网络维护工程师和硬件维护工程师继承自维护部员工。这些员工之间会形成一个继承体系,具体如下图所示。 在Java中,类的继承是指在一个现有类的基础上去构建一个新的类,构建出来的新类被称作子类,现有类被称作父类,子类会自动拥有父类所有可继承的属性和方法。 继承的格式&使用 格式: class 子类 extends 父类 {} 继承的好处&注意事项 1、继承的出现提高了代码的复用性,提高软件开发效率。 2、继承的出现让类与类之间产生了关系,提供了多态的前提。 注意事项 1、在Java中,类只支持单继承,不允许多继承. 2、多个类可以继承一个父类 3、在Java中,多层继承是可以的,即一个类的父类可以再去继承另外的父类 4、子类不能继承父类的私有成员 5、子类不能继承父类的构造方法,但是可以通过super去访问 6、不要为了部分功能而去继承,必须要符合 is a 的关系 继承中的成员关系 A:成员变量 a:子类的成员变量名称和父类中的成员变量名称不一样,这个太简单 b

C#接口

妖精的绣舞 提交于 2020-01-14 04:57:37
一、接口概念: 1、接口的命名规则:接口的名字一般采用字母“I”开头,因为接口的全名是interface。 2、接口的特点:接口里面可以有方法,属性,索引器和事件的签名,但是方法下面不能有具体的实现。 3、接口不能使用static、abstract等关键字。因为使用static是为了避免实例化,可以直接调用类的方法,但是接口本身也不能调用,用static没有意义。并且接口本身就很抽象,再用abstract也没有意义。 二、接口的作用: 接口的使用更符合面向对象的开闭原则,减小代码维护量。接口的应用: interface Ifood { Eat(); } class People { Withmouse( Ifood food) { food.Eat(); } } class Breakfast:Ifood { Eat() { //吃早饭 } } class Lunch:Ifood { Eat() { //吃午饭 } } class Dinner:Ifood { Eat() { //吃晚饭 } } main { Ifood food; People pe=new People(); food=new Breakfast(); p.Withmouse(food); food=new Lunch(); p.Withmouse(food); food=new Dinner(); p

python摸爬滚打之day19----类的约束, 异常处理

♀尐吖头ヾ 提交于 2020-01-13 18:39:19
1、类的约束   父类对子类某些功能的约束.  python 中的两种约束:   1, 提取父类, 然后 在父类中定义好方法, 该方法什么都不用干, 就通过主动抛出异常 raise NotImplementedError, 所有的子类必须重写此方法, 否则访问时就会抛出异常(推荐使用). 1 class Base: 2 def login(self): 3 raise NotImplementedError("%s的这个对象的login功能没有实现" %(self.name)) 4 5 class Admin(Base): 6 def __init__(self,name): 7 self.name = name 8 def login(self): # 重写login方法,就直接运行自己类里面的login()方法. 9 print("login登录") 10 11 class Root(Base): 12 def __init__(self,name): 13 self.name = name 14 def denglu(self): # 没有重写login()方法,只能运行父类的login, 然后父类里login()抛异常 15 print("root登录") 16 17 class Normal(Base): 18 def __init__(self,name): 19