构造方法

Java面向对象基础

空扰寡人 提交于 2019-12-18 21:01:10
面向过程和面向对象 面向过程(Procedure Oriented)和面向对象(Object Oriented,OO)都是对软件分析、设计和开发的一种思想,它指导着人们以不同的方式去分析、设计和开发软件。 两者都贯穿于软件分析、设计和开发各个阶段,对应面向对象就分别称为 面向对象分析(OOA)、面向对象设计(OOD)和面向对象编程(OOP)。 面向对象和面向过程的总结 都是解决问题的 思维方式 ,都是代码组织的方式。 解决 简单 问题可以使用 面向过程 解决 复杂 问题: 宏观上使用面向对象把握,微观处理上仍然是面向过程。 面向对象思考方式 遇到复杂问题,先从问题中找名词,然后确立这些名词哪些可以作为类,再根据问题需求确定类的属性和方法,确定类之间的关系。 比喻: 一个经典的比喻:面向对象是盖浇饭、面向过程是蛋炒饭。盖浇饭的好处就是“菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是“可维护性”比较好,“饭” 和“菜”的耦合度比较低。 对象的进化史(数据管理和企业管理共通之处) 数据无管理时代 最初的计算机语言只有基本变量(类似我们学习的基本数据类型),用来保存数据。那时候面对的数据非常简单,只需要几个变量即可搞定;这个时候不涉及“数据管理”的问题。同理,就像在企业最初发展阶段只有几个人,不涉及管理问题,大家闷头做事就OK了。

抽象类继承(雇员练习)

自古美人都是妖i 提交于 2019-12-18 20:00:41
package day6; abstract class Employee { private String name; private int id; private double pay; public Employee(String name,int id,double pay) {//父类中定义了一个带参数的构造函数,那么自己本来就有的隐式的构造函数就不存在了,那么子类中必须也有带参数的构造函数 // TODO Auto-generated constructor stub this.name = name; this.id = id; this.pay = pay; } public abstract void work();//抽象方法是没有方法体的,但是在子类中一定要把抽象方法给实现 } class coder extends Employee { public coder(String name, int id, double pay ) { super(name, id, pay ); // TODO Auto-generated constructor stub } @Override public void work() { // TODO Auto-generated method stub System.out.println("coding");

Java 对象和类

瘦欲@ 提交于 2019-12-18 18:39:50
摘录于:http://www.runoob.com/java/java-object-classes.html Java 对象和类 Java作为一种面向对象语言。支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 本节我们重点研究对象和类的概念。 对象 :对象是类的一个实例( 对象不是找个女朋友 ),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。 类 :类是一个模板,它描述一类对象的行为和状态。 Java中的对象 现在让我们深入了解什么是对象。看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。 拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。 对比现实对象和软件对象,它们之间十分相似。 软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。 在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。 Java中的类 类可以看成是创建Java对象的模板。 通过下面一个简单的类来理解下Java中类的定义: public class Dog{ String breed; int age; String color; void barking(){ } void hungry(){ } void sleeping(){ } }

包,继承,访问权限

微笑、不失礼 提交于 2019-12-18 09:26:56
包是java语言有效管理类的方式,将同一个应用的类打入一个包中,把不相关或者是完成不同功能的类放入不同的包中,使得管理类变的更容易。 package语句作为Java源文件的第一条语句,指明该源文件定义的类所在的包。package语句的一般语法格式为: package <包名> 包的命名规则: 1.使用英文字母作为包的名称。 2.包名要求全部使用小写字母表示(多个单词也全部小写)。 3.如果包名包含多个层次,每个层次应该用“.”分割。 例如: package test package com.xt.test import关键字 使用import关键字可以将其他包中的类引入到当前类中以备使用。在编写源文件时,除了自己编写类外,我们经常需要使用Java提供的许多类,这些类可能在不同的包中。如果需要引入其他包中的类,可以使用如下语法格式: import 包名.类名; 面向对象编程的三大特征 封装 继承 多态 extends 继承 继承是面向对象编程的三大特征之一 由继承而得到的类称为子类(或派生类),被继承的类称为父类(或超类)。 public class Father{}; public class Son extends Father{}; 运行子类时会先执行父类构造方法。 子类继承一般类的状态(成员变量)和行为(方法),并根据需要增加额外的状态(成员变量)和行为(方法)。

【Java面试之一基础知识】

☆樱花仙子☆ 提交于 2019-12-18 04:26:38
面试题正确打开方式 : https://www.xdx97.com/article?bamId=656552384847151104 1. 面向对象和面向过程的区别 1、面向过程 :面向过程性能比面向对象高。嵌入式开发、Linux/Unix等一般采用面向过程开发。 2、面向对象 :面向对象易维护、易复用、易扩展。 。但是,面向对象性能比面向过程低。 2. Java 语言有哪些特点 1、简单易学; 2、面向对象(封装,继承,多态); 3、平台无关性( Java 虚拟机实现平台无关性); 4、支持多线程 3. 关于 JVM JDK 和 JRE 最详细通俗的解答 1、Java虚拟机(JVM)是运行 Java 字节码的虚拟机。JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。 2、JDK是功能齐全的Java SDK。它拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb)。它能够创建和编译程序。 3、JRE 是 Java运行时环境。它是运行已编译 Java 程序所需的所有内容的集合。但是,它不能用于创建新程序。 4. Java和C++的区别? 1、Java 不提供指针来直接访问内存,程序内存更加安全 2、Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承

java 访问修饰符

安稳与你 提交于 2019-12-18 03:26:29
类、方法、成员变量和局部变量的可用修饰符 修饰符 类 成员访求 构造方法 成员变量 局部变量 abstract(抽象的) √ √ - - - static (静态的) - √ - √ - public(公共的) √ √ √ √ - protected(受保护的) √ √ √ - private(私有的) - √ √ √ - synchronized(同步的) - √ - - - native(本地的) - √ - - - transient(暂时的) - - - √ - volatie(易失的) - - - √ - final(不要改变的) √ √ - √ √ 类 修饰符 Public 可以从其他类中访问 Abstract 本类不能被实例化 Final 不能再声明子类 构造函数修饰符 Public 可以从所有的类中访问 Protected 只能从自己的类和它的子类中访问 Private 只能在本类中访问 域 / 成员变量修饰符 Public 可以从所有的类中访问 Protected 只能从本类和它的子类中访问 Private 只能从本类中访问它 Static 对该类的所有实例只能有一个域值存在 transient 不是一个对象持久状态的一部份 Volatile 可以被异步的线程所修改 final 必须对它赋予初值并且不能修改它 局部变量 修饰符 final

java学习(2):类和对象

空扰寡人 提交于 2019-12-18 03:19:28
一、类 类可以看成是创建对象的模板,它描述一类对象的行为和状态。创建对象也叫类的实例化。类必须先定义才能使用。 通过下面一个简单的类来理解下Java中类的定义: public class Dog { //Dog类的名字 String name; // 成员变量name int age; static int time=0; //类变量 void hungry(){ System.out.println("主人,我饿了"); } void sleeping(){ int t = 0; //局部变量 System.out.println("主人,我睡了"); } } 一个类可以包含以下类型变量: 局部变量 :在方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。 成员变量 :成员变量是定义在类中、方法体之外的变量。这种变量在创建对象的时候实例化(分配内存)。成员变量可以被类中的方法和特定类的语句访问。 类变量(静态成员) :类变量也声明在类中,方法体之外,但必须声明为static类型 一个类可以拥有多个方法,方法可以表示类的行为,在上面的例子中:hungry()和sleeping()都是Dog类的方法。 构造方法 在类的实例化过程中构造方法会自动执行,它主要在实例化过程中做一些初始化的工作。 每个类都有构造方法

hello world

十年热恋 提交于 2019-12-18 02:55:37
面向对象 构造方法 特点: 方法名和类名相同,没有返回值 作用: 1:使用new关键字的时候会调用到构造器。本质是在调用构造器。 2:用来初始化对象 注意 无参构造默认存在(隐式存在),但是在定义了有参构造之后必须显式定义无参构造。 类与对象的总结 类是一个模板是抽象的,对象是类的实例。 八大基本数据类型: Java中的数据类型,分为引用类型和基本数据类型。基本类型又分为8种: 整型:byte,short,int,long 浮点型:float,double 字符型:char Boolean型:boolean 封装 作用: 高内聚低耦合 1、提高程序的安全性,保护数据 2、隐藏代码的细节 3、统一接口 4、增强了程序的可维护性 继承 (在Java中所有的类都默认继承Object类) 继承的本质是对类进行抽象,从而实现对现实事物更好的建模。 子类(派生类)是父类(基类)的扩展。 子类继承父类,使用关键字 extends 表示。例如:public class Student extends Person(){...} 子类只能继承一个父类 父类中私有的方法不能被继承 关于super与this的用法 在一个类中,this表示使用当前类的属性,而super则表示使用父类中的属性。 注意: 1、super调用父类的构造方法,必须在构造方法的第一行 2

python3的多继承问题

我怕爱的太早我们不能终老 提交于 2019-12-17 19:02:36
#在Python的多继承中,如果子类继承的多个父类中包含了同名的方法,子类在调用时会选择哪个 class Item : def info (self): print("Item中的方法","这是一个商品") class Product: def info(self): print("Product中的方法" , "这是一个工业产品") class Mouse(Item, Product): pass m = Mouse() m.info() 输出: Item中的方法,这是一个商品 class Item : def info (self): print("Item中的方法","这是一个商品") class Product: def info(self): print("Product中的方法" , "这是一个工业产品") class Mouse(Product, Item): pass m = Mouse() m.info() 输出: Product中的方法 这是一个工业产品 总结: 可见多继承中,父类有同名方法,子类在调用时会选择继承中排在前面的父类方法 拓展: 如果子类也包含同名方法,子类调用同名方法,优先选择自己的方法,这叫做重写,也叫覆盖override class Item : def info (self): print("Item中的方法","这是一个商品")

学习JDK1.8集合源码之--LinkedHashSet

早过忘川 提交于 2019-12-17 18:20:39
1. LinkedHashSet简介   LinkedHashSet继承自HashSet,故拥有HashSet的全部API,LinkedHashSet内部实现简单,核心参数和方法都继承自HashSet,只是重写了spliterator一个方法。   HashSet底层通过HashMap进行数据存储,而LinkedHashSet则是通过LinkedHashMap进行数据存储,故LinkedHashSet是一个有序的不可重复集合,非线程安全。 2. LinkedHashSet实现 //继承自HashSet,实现了Set、Cloneable、java.io.Serializable接口public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, java.io.Serializable { private static final long serialVersionUID = -2851667679971038690L;    //传入初始容量和加载因子 public LinkedHashSet(int initialCapacity, float loadFactor) { super(initialCapacity, loadFactor, true); }    //传入初始容量