Java面向对象
该专栏用来复习记录面向对象相关的内容
你好像很好吃a
吃不了自律的苦,就要吃平庸的苦。
展开
-
Java面试题 构造器是如何工作的?
构造器是如何工作的?分配对象空间,并将对象中成员初始化为0或null,java不允许用户操作一个不定值对象。执行属性值的显式初始化。执行构造器。将变量关联到堆中的对象上。原创 2020-09-01 15:55:18 · 399 阅读 · 0 评论 -
Java 内部类的继承
1、内部类的继承:class ClassA{ class ClassB{ }}语法:class OutputInnerClass extends ClassA.ClassB{}2、例子:创建一个类,继承一个内部类public class Demo{ class innerClass{//成员内部类 }}class NewClass extends Demo.innerClass{ public NewClass(Demo d){ d.super(); }}创建原创 2020-08-04 14:49:36 · 419 阅读 · 0 评论 -
Java 内部类
一、内部类:在类体里面定义了一个类,这个类就是内部类。类中套类,外面的称为Outer外部类,里面的称为Inner内部类内部类通常只服务于外部类,对外不具备可见性内部类对象通常是在外部类中创建的内部类中可以直接访问外部类的成员(包括私有的)二、内部类主要分为四种:成员内部类局部内部类静态内部类匿名内部类1、成员内部类:定义在外部类中的内部类public class Demo{ innerClass in = new innerClass(); //要想在外部类方法中调用内部类原创 2020-08-04 14:22:10 · 177 阅读 · 0 评论 -
Java 导入类包
1、Java中导入类包需要使用import关键字:我们导入类以后我们就不用使用完整的类名了,就可以直接找到该包下的该类。导如类包的语句要放到class的最上面。如果导入某一个包中的很多类名,我们可以通过*来进行导入import java.util.*;该包下的所有类。2、使用import关键字导入静态成员:例如我们平时使用的System.out.println();输出语句:public class Demo{ public static void main(String[] args){原创 2020-08-04 10:46:21 · 13702 阅读 · 0 评论 -
Java 类包
1、在Java中的类包相当于一个小容器,我们将类放到容器中,方便我们归类于整理,以及方便我们调用,如果我们想要用到某个包中的类的时候,我们需要使用import的语法import java.lang.Math:比如我们要用到Date类:当我们声明一个Date类以后,编译器会提示我们一个错误,告诉我们需要导入一个类。我们通过:improt java.util.Date就可以导入了util包下的Date类。如果我们同时用到了一个包中的多个类,我们可以通过*:即可导入该包下的所有类。import jav原创 2020-08-04 10:18:59 · 883 阅读 · 0 评论 -
Java 完整类名
Java中我们通常情况下声明一个类都是直接写其类名,而实际上每个类都有完整的类名,以包名.类名的形式声明,例如我们常用的类:String:java.lang.StringList:java.util.ListNumberFormat:java.text.NumberFormat比如Date类,我们在声明的时候Date date = new Date();而Date类有两个,一个是java util包下的,一个是java sql包下的,我们可以通过完整类名来加以区分:java.util.Dat原创 2020-08-04 09:57:39 · 2931 阅读 · 2 评论 -
Java 类名冲突
在Java中允许开发者使用相同名称的类,但是使用相同名称的类容易造成类名冲突,比如在Java API中有两个Date类,Java中是通过相同的类名放到不同的包中来区分,java.util.Date和java.sql.Date,需要注意的是,自己创建的类会覆盖API中的类。public class Demo{ public static void main(String[] args){ String a = "123"; } class String{ }}上面我们自己定义了Stri原创 2020-08-04 09:42:15 · 1656 阅读 · 0 评论 -
Java 接口【总结】
抽象类是所有派生类具有的共有属性,我们可以抽出变为一个抽象类,但是如果子类的一部分有一部分没有的话,我们通过抽象类就实现不了了,这时我们就用到了接口,我们可以将具有该属性的类实现该接口即可。接口:是将部分派生类所共有的行为抽到接口中,符合既是也是原则,需要使用接口。抽象类是所有派生类具有的共有属性,接口是部分派生类所共有的属性。接口由interface定义,是一个数据类型(引用类型)。接口不能被实例化,接口是需要被实现的,一、接口中有什么?1、成员变量(常量):public static fi原创 2020-08-03 17:59:23 · 209 阅读 · 0 评论 -
Java 抽象类、抽象方法【abstract】
1、抽象类:使用abstract修饰的类抽象方法:使用abstract修饰的方法包含抽象方法的类必须是抽象类,但是抽象类可以不包含抽象方法。抽象类是需要被继承的,抽象方法是需要被重写的,建议重写抽象类中的所有方法(包含非抽象方法)。抽象类是不能被实例化的,只能进行继承,然后向上造型该类,实现不同的行为。抽象方法只有方法的定义,没有具体的实现,需要被重写。2、抽象类的意义:封装共有的行为和属性(代码复用)为所有的派生类提供统一的类型(向上造型)可以包含首项方法,为所有派生类提供统一的入口,派原创 2020-08-03 17:30:29 · 345 阅读 · 0 评论 -
Java 多态
1、多态最直观的就是:同一个变量,同一个方法,执行出不同的结果。多态:行为的多态(所有抽象方法都是多态的,因为抽象方法都要进行重写,重写就是多态的表现形式)对象的多态(所有对象都是多态的)向上造型、强制类型转换(向下造型)多态的表现形式:重写:根据对象的不同来表现多态重载:根据参数的不同来表现多态2、例子:比如我们创建一个动物类、鱼类、鸟类:class Animal{ void move(){ }}class Fish extends Animal{ void mov原创 2020-08-03 16:51:29 · 144 阅读 · 0 评论 -
Java 类的上下转型
1、类的向上转型:语法:Parents objece = new Child();父类声明一个对象,由子类进行实例化。2、向下转型:语法:Parents p = new Parents(); Child c = (Child)p;必须使用强制类型转换,如果转换失败会报ClassCastExcetion类型转换异常。instanceof关键字:用来判断某一个对象是否继承自某一个类:boolean result = child instanceof parents...原创 2020-08-03 15:52:07 · 176 阅读 · 0 评论 -
Java Object类
学习完继承后,我们必须要知道的就是Object类,因为Object是所有类的父类,是类层次结构的根类,所有对象(包括数组)都实现了这个类的方法,所有的对象都会直接或间接的继承自Object类。Object的常用方法:1、getClass()方法:...原创 2020-08-03 09:53:25 · 177 阅读 · 0 评论 -
Java 类的继承【super】
继承:父类/派生类:所有派生类所共有的属性和行为子类/派生类:派生类所特有的属性和行为1、java中类继承的作用是为了代码的复用,子类通过extends关键字来实现继承父类所具有的属性和行为,派生类继承超类后,派生类具有派生类和超类的所有的属性和行为。一个超类可以有多个派生类,但是一个派生类只能有一个超类,单一继承继承具有传递性,例如B继承A,C继承B,那么C不仅有B的所有属性和行为,因为B也继承了A,所以C也具有A的所有属性和行为。2、Java规定:构造派生类之前必须先构造超类,在派生类的构造原创 2020-07-31 17:36:15 · 1944 阅读 · 0 评论 -
Java 大数字类BigDecimal类
BigInteger类和BigDecimal类都可以实现大数字的运算,不同的是BigDecimal加入小数计算,BigInteger类通常用来进行工程和科学计算,但是如果要进行商业的计算(股票等涉及金额精度的计算)我们就要用到BigDecimal类,BigDecimal类可以实现任意精度小数的计算,也就是说可以计算出小数点后任意一位的数字。1、构造方法:BigDecimal d = new BigDecimal("3.14");BigDecimal d = new BigDecimal(3.14);原创 2020-07-31 15:21:24 · 536 阅读 · 0 评论 -
Java 大数字BigInteger类
大数字BigInteger类:我们知道int的最大值为2^31-1,而BigInteger类取值范围为任意精度;1、构造方法:BigInteger i = new BigInteger("99999");BigInteger i = BigInteger.valueOf(99999L);2、常用方法:使用大数字类运算的时候不能使用数字运算符加:add(BigInteger val)减:subtract(BigInteger val)乘:multiply(BigInteger val)除原创 2020-07-31 13:46:20 · 418 阅读 · 0 评论 -
Java Random类实现微信抢红包
1、语法:Random r = new Random();Random类提供了一些方法来获取随机数:nextInt() 返回随机生成int值nextLong() 返回随机long值nextDouble() 返回随机Double值nextFloat() 返回随机Float值nextBoolean() 返回随机Boolean值最常用的是nextInt(int n)方法,参数是一个int值,取值范围:0 <= nextInt(int n) < n,会等于0不会等于n。Random原创 2020-07-29 09:37:39 · 1156 阅读 · 0 评论 -
Java Math类 random方法
Math.random()方法:会产生一个double值,其范围在0<= Math.random()<1之间(可以等于0但是永远不会等于1)。如果乘以一个系数:0*m <= Math.random()*m < 1*m,常用于获取随机数。注意:产生的是一个double值,如果我们要用int接收要进行强制转换。...原创 2020-07-28 17:31:42 · 323 阅读 · 0 评论 -
Java Math类
Math类位于java.lang.Math中,java.lang包不需要引入,系统会自动调用。Math类提供的都是静态方法,可以直接调用,大大的减少了我们的代码量。常用的数学运算方法:原创 2020-07-28 16:58:42 · 132 阅读 · 0 评论 -
Java 数字格式化
数字格式化:DecimalFormat类:十进制数字格式化类构造方法:1、格式化模板:DecimalFormat df = new DecimalFormat("###");2、也可以使用不带参的构造方法,然后使用applyPattren("###");来定义格式化模板:DecimalFormat df = new DecimalFormat();df.applyPattern("###");...原创 2020-07-22 09:54:31 · 208 阅读 · 0 评论 -
Java 包装类【Number】
Number包装类:是数值包装类(Double、Long、Byte、Float、Integer)的父类,他不能被实例化,所以是一个抽象类,但是他的子类可以构造它的对象然后继承Number的所有方法。例子:我们用其Number的子类对Number进行实例化://用其子类对Number进行实例化Number num = new Double(12.34);System.out.println(num); //12.34System.out.println(num.doubleVallue());原创 2020-07-21 17:33:17 · 321 阅读 · 0 评论 -
Java 自动拆装箱总结
包装类的自动拆装箱:(我们拿int类型为例)首先我们要知道,Integer是int的包装类,Integer是一个对象,int是一个基本数据类型。1、要想将int基本数据类型转换为包装类Integer:Integer i1 = Integer.valueOf(int i);2、要想将Integer对象转换为基本类型int:int i = Integer.intValue(Integer i1);3、自动拆装箱无非就是虚拟机帮我们在底层自动的帮我们在Integer和int之间进行转换:Inte原创 2020-07-21 17:10:00 · 237 阅读 · 0 评论 -
Java 包装类【Byte】
1、byte的包装类:Byte的创建:构造方法:Byte b = new Byte(b); //用byte作为参数Byte b = new Byte("15"); //用String作为参数注意:使用上述构造方法的形式创建对象在JDK12以后已经过时,建议用下面方法创建;byte b = 15; //自动装箱//自动拆装箱底层过程Byte b = Byte.valueOf(byte b);Byte b = Byte.valueOf(String s);2、Byte的常量:(和其原创 2020-07-21 16:31:28 · 922 阅读 · 0 评论 -
Java 包装类【Boolean】
1、布尔类型的包装类:Boolean类用于分装boolean类型数据。构造方法:Boolean(boolean value);Boolean(String str);2、Boolean提供的方法:Boolean.FALSE; //falseBoolean.TRUE; //true//使用构造方法创建boolean的包装类Boolean b = new Boolean("true");Boolean b = new Boolean(true);//注意:我们在括号中如果不是tr原创 2020-07-21 16:10:24 · 1536 阅读 · 0 评论 -
Java 包装类【Integer】
1、Java包装类:因为Java编程的特点是面向对象的,而基本数据类型不能实现这一功能,使得程序开发存在一定的弊端,所以Java提供了包装类。将数据类型封装到包装类中,然后创建这个类的对象,然后再对这个对象进行响应的操作,这个封装数据类型的类就叫包装类。2、包装类及其对应的基本数据类型:3、包装类的使用:(构造方法)Integer(int number)Integer(String str)4、Integer为例的相关方法://Integer的最小值Integer.MIN_VALUE;原创 2020-07-21 15:46:52 · 423 阅读 · 0 评论 -
Java 对象的特性
1、对象的创建:Java语言中使用new操作符调用构造方法就可以创建一个对象。特殊:String str = 'abc';其实str也是一个对象,虽然代码里没有new关键字,但Java虚拟机在创建字符串的同时,也创建了一个匿名的字符串对象,并交给str引用。2、对象的引用:在Java语言中尽管一切都可以看作对象,但真正的操作标识符实质上是一个引用。注意:引用只是存放一个对象的内存地址,并非存放一个对象,严格地说引用和对象是不同的,但是可以将这种区别忽略,如可以简单地说book是Book类的一个对象原创 2020-07-20 15:48:29 · 537 阅读 · 0 评论 -
Java 类的主方法 main
主方法:主方法是类的入口点,它定义了程序从何开始;主方法提供对程序流向的控制,Java编译器通过主方法来执行程序。public static void main(String[] args){ //方法体 }说明:主方法也是静态的,所以如要直接在主方法中调用其他方法,则该方法必须是静态的。主方法没有返回值。主方法的形参为数组,其中args[0]~args[n]分别代表程序的第一个参数到n个参数,可以使用args.length获取参数的个数。...原创 2020-07-20 15:24:18 · 2599 阅读 · 0 评论 -
Java 常量【static final修饰】
static final常量:必须声明的同时初始化类名点来访问建议:常量所有字母都大写,多个单词之间用_分隔编译器在编译时将常量直接替换为具体的值,效率高。因为static是静态修饰符,属于类的所以要用类名点来访问,因为是final修饰,其值不可以改变,所以必须声明的同时初始化,而常量在使用的过程中通常使用大写字母来定义,约定俗成的事情,编译器在编译时将常量直接替换为具体的值,常量和具体的值在参与运算的时候也是直接替换为具体的值的,如果是变量则不会。通常常量也会由public修饰的,因为常量原创 2020-08-04 16:11:05 · 871 阅读 · 0 评论 -
Java 访问修饰符【final】
final常量:一个变量被final修饰以后就会变成一个常量,不允许被修改。final修饰类的时候,这个类不可以被继承;final修饰方法的时候,该方法不能被重写;final修饰变量的时候,该变量不能被修改。class Demo{ final double PI = 3.1415926; public static void main(String[] args){ PI = 3.12; }}上面的代码会编译错误:提示被final修改以后不可以被修改;...原创 2020-08-04 11:02:47 · 223 阅读 · 0 评论 -
Java 静态修饰符【static】
1、静态修饰符:由static修饰的变量、常量和方法被称作静态变量、静态常量、静态方法,他们都存在内存的静态区中,这些变量和方法有独立的生存周期。说明:内存中的静态区在整个程序运行结束之后才会释放,所以用静态修饰的代码的声明周期,是整个程序的生命周期。2、静态区:内存中静态区的变量可以被本类共享,其他类调用本类静态变量和静态方法时,无需实例化就可以调用。3、静态变量:很多时候,不同的类之间需要对同一个变量进行操作,在Java程序中,把共享的变量用static修饰,该变量就是静态变量。说明:同一个类的原创 2020-07-20 11:32:42 · 855 阅读 · 0 评论 -
Java 权限修饰符
Java中的权限修饰符主要包括private、protected、public和默认的(什么都不写),这些修饰符控制着类和类的成员以及成员方法的访问。总结:public:公开的,任何类都可以访问private:私有的,只有本类可以访问,其他类都不可以访问protected:受保护的,本类、同包类、派生类可以方法默认的:本类、同包类说明:类的访问修饰符只能是默认的或者是public类中成员的访问修饰符以上四种都可以...原创 2020-07-03 11:32:39 · 136 阅读 · 0 评论 -
Java 构造方法Constructor概述和格式
1、构造方法概述和作用:给对象的数据(属性)进行初始化,当一个类实例化一个对象时,类都会自动调用构造方法。构造方法格式特点:方法名与类名相同(大小也要与类名一致)没有返回值类型,连void都没有没有具体的返回值return2、对象初始化:在构造方法中可以称为成员变量赋值,这样当实例化一个本类的对象时,相应的成员变量也将被初始化。如果类中没有明确定义构造方法,则编译器会自动创建一个不带参数的默认构造方法。注意:如果在类中定义的构造方法都不是无参的构造,则编译器不会为类设置了一个默认的无参构造原创 2020-07-03 13:49:16 · 1730 阅读 · 0 评论 -
Java 类的特性【this】
1、this关键字:当类中的成员变量与成员方法中的参数重名时,方法中如何使用成员变量的呢?public class Book{ String name = "abc"; public void showName(String name){ System.out.println(name); } public static main(String[] args){ Book b = new Book(); b.showName("123"); }}输出:123,很显然当成员变量和原创 2020-07-03 11:03:51 · 273 阅读 · 0 评论 -
Java 类的特性【成员变量和局部变量】
因为上帝为了让世界五彩缤纷,所以创造了不同肤色的人,其中黑人、白人、黄种人就可以称为类,而具体的人,就是对象,比如张三是黄种人,黄种人就是类,张三就是具体的对象。下面我们来记录一下类有哪些特性:1、成员变量:成员变量就是Java中类的属性。比如一只海鸥,它有什么属性呢?public class Bird{ String wing; //翅膀 String claw; //爪子 String break; //喙 String feather; //羽毛}上面我们创建的鸟的类,翅膀、爪子原创 2020-07-03 10:13:46 · 323 阅读 · 0 评论 -
Java 面向对象概述
1、我们这里介绍的对象是一个抽象的概念,英文叫Object,表示任意存在的事物。面向对象就是对现实的事物进行了建模操作,万物皆对象。通常将对象划分为两部分:动态部分与静态部分;静态部分即为属性,动态部分即行为。2、基于对象抽出了类:类就是同一类事物的统称,如果将现实世界中的一个事物抽象成对象,类就是这类对象的统称。类是构造对象时所依赖的规范,即类是对象的模板,对象是类的具体实例。3、面向对象编程设计的特征:封装、继承、多态(其实还有第四个特征:抽象,也就是我们开始介绍的对象和类的概念)封装:是原创 2020-07-03 09:13:09 · 198 阅读 · 0 评论