当前位置: 首页 > news >正文

杭州网站建设公司联系方式河南网站推广那家好

杭州网站建设公司联系方式,河南网站推广那家好,自己建网址,cdn网站网络加速器二.面向对象 1.面向对象有哪些重要的关键字?作用是什么? 2.理解多态的使用? 3.接口与抽象类的相同点和不同点? 4.equals和toString的判断? 5.新建对象的流程是什么?new一个对象? 6.深拷贝…

二.面向对象

1.面向对象有哪些重要的关键字?作用是什么?

2.理解多态的使用?

3.接口与抽象类的相同点和不同点?

4.equals和toString的判断?

5.新建对象的流程是什么?new一个对象?

6.深拷贝浅拷贝和引用拷贝的区别?

7.类的多种类型?

待更新

待更新

二.面向对象

1.面向对象有哪些重要的关键字?作用是什么?

①解决封装的三个关键字

  • private 类内
  • 缺省 类内+包内
  • protected 包内+不同包的子类(只能在子类内部访问到)
  • public 项目内
  • 注意:代码块无需封装,如果static修饰,则是类加载执行而执行
    如果无static修饰,则是对象创建而执行。

②static关键字

  • static修饰 属性,方法,代码块,内部类。不修饰构造器,因为构造器在对象加载时采用。
  • 注意:static修饰的代码块或方法,内部只能访问static的成员变量。
  • 静态和非静态在JVM的运行
    – 方法区加载类信息,静态结构,常量池并运行静态代码快。
    – 堆区保存类new的对象并运行非静态代码块。
    – 栈区保存对象的引用。

③final

  • 不可继承 类
  • 不可更改 变量
  • 不可重写 方法

④abstract

  • 抽象类
  • 抽象方法

2.理解多态的使用?

①条件

  • 类是继承关系
  • 子类重写了方法
  • 即父类引用调用子类重写的方法

②编译时多态和运行时多态

  • 编译时多态:方法重载
    – java编译时即确定哪一个重载方法
  • 运行时多态:方法重写
    – 同一引用调用同样的方法做不同的事情
    – 相当于子类向上转型为父类
    – 建立变量的连接然后加载对象,java编译规则规定父类引用可以指向子类对象

③动态绑定和静态绑定

  • 静态绑定:程序运行前就绑定方法到类上
  • 动态绑定:程序在运行期间才确定,方法运行时才知道属于哪个类
    – 引用指向的具体实例的方法而不是引用变量类型的方法
  • 代码理解
package mianxiangduixiangtest;public class DongTaiJingTaitest {public static void main(String[] args) {Animal animal = new Cat();animal.drink();animal.eat();//猫喝水//动物吃饭//即eat方法是与类静态绑定的,在JVM类加载时就确定animal调用的是Animal的eat方法,不需要创建对象//drink方法是与对象动态绑定的,即在运行时才确定drink方法调用的是Cat中的drink方法}
}class Animal{static void eat(){System.out.println("动物吃饭");}void drink(){System.out.println("动物喝水");}
}
class Cat extends Animal{static void eat(){System.out.println("猫吃饭");}void drink(){System.out.println("猫喝水");}
}

④理解多态

  • 从编译+运行角度
    – 编译时,java规定类只能调用自己结构中定义的方法,且规定父类引用可以指向子类的实例(只看语法)
    – 运行时,由于类加载顺序或初始化顺序,子类重写的方法覆盖了父类的原方法,故实际上父类引用调用的方法为子类重写的方法(只看引用指向的类加载的结构)
  • 从反射的角度
    – 事实上,父类的引用可以调用子类个性的方法,只不过只能在运行期间实现,因为编译时会报错(必须调用自己结构中定义的方法)。
    – 由此可以解释父类引用指向子类对象时,在运行期间,父类引用等同于子类引用 ,可以调用子类所有的方法和属性

⑤多态代码实现

package mianxiangduixiangtest;import java.lang.reflect.Method;public class DuoTaiTest {public static void main(String[] args) throws Exception {People p = new Man();//p.eat()过编译,运行时p实际上指向的是子类的结构,故p可以调用子类的方法//输出男人吃饭p.eat();// p.drink(); 不过编译,因为编译只能运行引用类型 类的结构Class aClass = p.getClass();Method drink = aClass.getDeclaredMethod("drink");//输出男人喝水drink.invoke(p);}
}
class People{void eat(){System.out.println("人吃饭");}
}
class Man extends People{void eat(){System.out.println("男人吃饭");}void drink(){System.out.println("男人喝水");}
}

3.接口与抽象类的相同点和不同点?

  • 接口 方法完全抽象,implements,无构造器,默认public也只能是,
    子类实现接口必须重写。
  • 抽象类 可以有默认实现,extends,有构造器,所有封装都可,
    子类继承抽象类不重写成为抽象类。
  • 两者都无法实例化,都可以作为多态的引用
  • 代码
package mianxiangduixiangtest;public class ChouJieTest {
}interface Cup{void Size();
}
abstract class Cup1{//接口可以有默认实现static void Size1(){System.out.println("大尺寸");}abstract void Size();
}

4.equals和toString的判断?

  • Object类的equals底层判断 ==
  • 实现的类需要重写equals和toString

5.新建对象的流程是什么?new一个对象的流程?

①类加载

类加载到方法区中(原因:方便JVM找.class文件)

②开辟内存空间

开辟堆内存空间(原因:寻找对象需要的内存空间)

③初始化成员变量

  • 初始化父类 静态变量或静态代码块
  • 初始化子类 静态变量或静态代码块
  • 父类普通变量-初始化代码块-构造方法
  • 子类普通便利-初始化代码块-构造方法

④引用变量建立连接

6.深拷贝浅拷贝和引用拷贝的区别?

①三者概念

  • 深拷贝:堆中创建新对象,类中的引用类型也是创建新对象
  • 浅拷贝:堆中创建新对象,类中的引用类型复制引用地址
  • 引用拷贝:两个引用指向同一堆对象

②拷贝实现

  • Object类中的clone方法
    – 能够复制一个新的对象在堆内存中(super.clone),复制结果为Object,需要进行类型强转
    – native方法非java实现,是protected类型的
  • Cloneable接口
    – 标记接口
    –只有实现这个接口后,然后在类中重写Object中的clone方法,然后通过类调用clone方法才能克隆成功,调用中JVM底层方法判断类是否有标记接口Cloneable,有则克隆成功。
  • 深拷贝与浅拷贝实现
    – 深拷贝自己和每个成员属性都实现Cloneable接口并重写clone
    – 浅拷贝自己实现Cloneable接口重写clone即可

③代码实战

package mianxiangduixiangtest;public class ShengQianCopyTest {public static void main(String[] args) throws Exception{Paper paper = new Paper();Paper clone = (Paper)paper.clone();System.out.println(paper == clone);System.out.println(paper.tree==clone.tree);//浅复制时,第一个结果false,第二个结果为true,说明确实赋复制了新对象,但是对象内部的引用属性为赋值Paper1 paper1 = new Paper1();Paper1 clone1 = paper1.clone();System.out.println(paper1 == clone1);System.out.println(paper1.tree1==clone1.tree1);//深复制时,第一个结果和第二个结果都为false,说明确实复制了新对象,并且对象内部的对象属性也被赋值}
}class Paper implements Cloneable{Tree tree;@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}
class Tree{}
class Paper1 implements Cloneable{Tree1 tree1 = new Tree1();@Overrideprotected Paper1 clone() throws CloneNotSupportedException {Paper1 paper1 = (Paper1)super.clone();paper1.tree1 = (Tree1) this.tree1.clone();return paper1;}
}
class Tree1 implements Cloneable{@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}

7.类的多种类型?

①同级类

  • .java文件中有多个同级类(编译后多个.class文件)
  • public只能修饰其中一个

②内部类

  • 即分为局部内部类和成员内部类
    – 局部内部类定义在代码块和方法中
    – 成员内部类定义在类中,成员内部类分为非静态成员内部类和静态成员内部类,其中还有匿名内部类(只能使用一次)。
  • 非静态成员内部类:无法脱离外部类实例来实例化(成员属性)
  • 静态内部类:
    – 访问静态外部成员
    – 实例化不依赖于外部类,实例化外部对象可以访问外部非静态结构
  • 匿名内部类:是某个类的子类
  • 局部内部类:方法或代码块中

③代码示例

package mianxiangduixiangtest;public class NeiBuLeiTest {public static void main(String[] args) {//静态内部类可以通过外部类.内部类来实例化Person.Inner1 inner1 = new Person.Inner1();//成员内部类必须通过外部类的实例化来实例化Person person = new Person();Person.Inner inner = person.new Inner();}
}class Person{//成员内部类class Inner{}//静态内部类static class Inner1{}//匿名内部类Dog dog = new Dog(){};//局部内部类{class Cat{}}}
class Dog{}

未更新

未更新

http://www.shuangfujiaoyu.com/news/8487.html

相关文章:

  • 大型网站url深圳大鹏新区葵涌街道
  • 个人网站 内容建设中视频自媒体平台注册
  • 网站优化怎么做百度一下打开网页
  • 福州网站公司sem培训班培训多少钱
  • 杭州旅游景区网站建设seo外贸网站制作
  • 东莞智通人才最新招聘汕头seo计费管理
  • 邯郸景区网站制作营销型网站建设公司
  • 阿里巴巴国际站官网网页版怎样在百度上发布广告
  • 网站开发解决方案西安网站排名优化培训
  • 个人做啥网站流量大怎么自己制作网站
  • 在工商局网站怎么做清算渠道推广平台
  • asp动态链接生成网站地图哪些网站可以免费推广
  • 五莲网站建设报价攀枝花seo
  • 响应式机械类网站app开发制作
  • 生成flash的网站源码整合营销策划名词解释
  • app介绍类网站模板下载app到手机上并安装
  • 怎么样做好网站运营济南做网站推广哪家好
  • 东莞做网站开发的公司推广信息哪个平台好
  • 做我的世界缩略图的网站武汉seo优化代理
  • 仿牌独立站郑州网络推广效果
  • 选择大连网站建设在哪里找软件开发公司
  • 暖色系网站模板内容企业推广
  • 我想自己建立一个网站企业seo关键词优化
  • 做网站电脑配置要求个高吗网络营销方法和手段
  • 海尔建设此网站的目的是什么意思北京seo顾问
  • 免费建站网站一区黄在线国产杭州千锋教育地址
  • 个人站长做电音网站新媒体运营培训学校
  • 网站怎么认证中国世界排名
  • 域名买来可以做网站吗百度seo优化关键词
  • 新疆品牌网站建设好看的友情链接代码