当前位置: 首页 > 编程日记 > 正文

java子类对象和成员变量的隐写方法重写

1、子类继承的方法只能操作子类继承和隐藏的成员变量名字类新定义的方法可以操作子类继承和子类新生命的成员变量,但是无法操作子类隐藏的成员变量(需要适用super关键字操作子类隐藏的成员变量。)

public class ChengYuanBianLing {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        CheapGoods cheap=new CheapGoods();
//        cheap.weight=192.32;//非法
        cheap.newSetWeight(23);
        System.out.println(cheap.weight);
        System.out.println(cheap.newGetPrice());
        cheap.oldSetWight(3.32);
        System.out.println(cheap.oldGetPrice());

    }

}
class Goods{
    public double weight;
    public void oldSetWight(double w){
        weight=w;
        System.out.println("double型de weight="+weight);
    }
    public double oldGetPrice(){
        double price=weight*10;
        return price;
    }
    
}
class CheapGoods extends Goods{
    public int weight;
    public void newSetWeight(int w){
        weight=w;
        System.out.println("新的weight="+weight);
    }
    public double newGetPrice(){
        double price=weight*10;
        return price;
    }
    
}

2、方法重写 override method override

方法重写就是子类继承父类,子类方法中使用相同的方法名字和参数个数以及参数类型。子类通过重写父类的方法,可以隐藏父类的方法,重写父类的状态和行为改变为自己的状态和行为。

1、java线程就是一个object类,其实例继承类java.lang.Thread或其子类,创建编写线程运行时执行的代码有两种方式,一种是创建Thread子类的一个实例并重写run方法,一种是创建类的时候实现几口Runnable接口,如下展示的是run和start的区别。通过 调用start就会创建一个新的线程,但是run方法不会。run方法只会在当前的线程中运行。跟普通方法没有任何区别。

public class Test {
    public static void main(String[] args)  {
        System.out.println("主线程ID:"+Thread.currentThread().getId());
        MyThread thread1 = new MyThread("thread1");
        thread1.start();
        MyThread thread2 = new MyThread("thread2");
        thread2.run();
    }
}
class MyThread extends Thread{
    private String name;
    public MyThread(String name){
        this.name = name;
    }
    @Override
    public void run() {
        System.out.println("name:"+name+" 子线程ID:"+Thread.currentThread().getId());
    }
}

运行结果:

2、线程同步问题,
public class XianChengTongBuWenTi {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Bank bank=new Bank();
        bank.setMoney(300);
        Thread account, chsher;
        account=new Thread(bank);
        chsher=new Thread(bank);
        account.setName("读者");
        chsher.setName("写者");
        account.start();
        chsher.start();

    }

}
class Bank implements Runnable{
    int money=200;
    public void setMoney(int n){
        money=n;
    }
    public void run(){
        if(Thread.currentThread().getName().equals("读者"))
            saveOrTake(200);
        else if(Thread.currentThread().getName().equals("写者"))
        saveOrTake(300);
    }
    public synchronized void saveOrTake(int amount){
        if(Thread.currentThread().getName().equals("读者")){
            
//        while(true){
        for(int i=1;i<=1;i++){
            money+=amount/3;
            System.out.println(Thread.currentThread().getName()+"开始工作"+"有这么多字"+amount);
            try{
                Thread.sleep(1000);
            }catch(InterruptedException ex){
                
            }
        }
        }else if(Thread.currentThread().getName().equals("写者")){
            for(int i=1;i<=1;i++){
                money+=amount/3;
                System.out.println(Thread.currentThread().getName()+"开始工作"+"有这么多字"+amount);
                try{
                    Thread.sleep(1000);
                }catch(InterruptedException ex){
                    
                }
        }
    }
    
}
}
3、协调线程同步问题 ,wait和notify以及notifyall是object类中的final方法,被所有的类继承且不允许重写的方法,不可以在非同步方法中使用这些关键字,
public class XieTiaoTongBu {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        TicketHouse officer=new TicketHouse();
        Thread Tian, Ya;
        Tian=new Thread(officer);
        Tian.setName("田亚明");
        Ya=new Thread(officer);
        Ya.setName("倩倩");
        Tian.start();
        Ya.start();
    }
}
class TicketHouse implements Runnable{
    int fiveAmount=2,tenAmount=0,twentyAmount=0;
    public void run(){
        if(Thread.currentThread().getName().equals("田亚明")){
            saleTicket(20);
        }
        else if(Thread.currentThread().getName().equals("倩倩")){
            saleTicket(29);
        }
    }
    private synchronized void saleTicket(int money){
        if(money==20){
            fiveAmount+=1;
            System.out.println(Thread.currentThread().getName()+"真好合适");
        }
        else if(money==29){
            while(fiveAmount<=3){
                try{
                    System.out.println("\n"+Thread.currentThread().getName()+"等待");
                    wait();
                }catch(InterruptedException ex){
                    
                }
                fiveAmount-=3;
                twentyAmount-=1;
                System.out.println(Thread.currentThread().getName());
            }
            notifyAll();
        }
    }
}
4、线程联合问题 ,假设线程A在运行期间联合线程B,那么A线程会立刻终止,一直到B线程执行完毕之后A线程才会再一次排队等候CPU资源,以便恢复运行,但是如果A准备连联合的B线程已经结束,那么B.join()不会产生生活效果。

转载于:https://www.cnblogs.com/xinxianquan/p/8729238.html

相关文章:

Linux的cron和crontab定时任务

定时任务调用shell本地Windows写一个shell test.sh #!/bin/bashecho "Course Arrange Job runs well at: " date "%Y-%m-%d %H:%M:%S" >> /usr/www/wwwshell/www.txt 先在服务器执行看可不可以 注意需要 # dos2unix ./test.sh 再 # ./test.sh需要…

用AI创造可持续发展社会价值,第二届腾讯Light·公益创新挑战赛正式启动

12月23日&#xff0c;“创变者”2021年度腾讯Light论坛在厦门正式举办。在论坛上&#xff0c;由全国妇联宣传部指导&#xff0c;腾讯公司联合中国儿童中心主办&#xff0c;企鹅伴成长、腾讯华东总部、腾讯SSV创新办学实验室、企鹅爱地球、腾讯优图实验室、腾讯云AI、腾讯云微搭…

CSS3 @keyframes animate

2019独角兽企业重金招聘Python工程师标准>>> 1.keyframes定义和用法 通过 keyframes 规则&#xff0c;您能够创建动画。 创建动画的原理是&#xff0c;将一套 CSS 样式逐渐变化为另一套样式。 在动画过程中&#xff0c;您能够多次改变这套 CSS 样式。 以百分比来…

linux系统命令学习系列-文件和目录管理

复习上节内容&#xff1a;1. 定时执行任务命令crontab –e, crontab –l,crontab –r2. 作业&#xff1a;定义一个定时任务&#xff0c;每分钟向/tmp/test.txt文件输出hello worldcrontab –e*/1 * * * * echo ‘hello world’>>/tmp/test.txt本节我们来说一下文件和目录…

GPT-3再进化:通过浏览网页来提高事实准确率

作者 | OpenAI来源 | 数据实战派为了让 GPT-3 模型可以更准确地对开放式问题进行回答&#xff0c;研究人员使用了基于文本的网络浏览器对 GPT-3 进行微调。微调后的 WebGPT 模型可以对人类实时回答问题的方法进行学习&#xff0c;比如提交搜索、跟踪链接并上下滚动网页。研究人…

lamp-安装脚本-修订版2

#!/bin/bash #write by zhang_pc #at 2015.08.07 #apache2.4 php.5.4 mysql5.5 #脚本说明&#xff0c;如果脚本所在目录有源码包就用本地的&#xff0c;否则就从互联网下载APR_FILESapr-1.5.2.tar.gz APR_DIRapr-1.5.2 ARP_PRE/usr/local/apr APR_URLhttp://mirror.bit.edu.cn/…

Linux的rc.local自启动服务

linux有自己一套完整的启动体系&#xff0c;抓住了linux启动的脉络&#xff0c;linux的启动过程将不再神秘。本文中假设inittab中设置的init tree为&#xff1a;/etc/rc.d/rc0.d/etc/rc.d/rc1.d/etc/rc.d/rc2.d/etc/rc.d/rc3.d/etc/rc.d/rc4.d/etc/rc.d/rc5.d/etc/rc.d/rc6.d/e…

[日常] Go语言圣经-函数递归习题

练习 5.1&#xff1a; 修改findlinks代码中遍历n.FirstChild链表的部分&#xff0c;将循环调用visit&#xff0c;改成递归调用。 练习 5.2&#xff1a; 编写函数&#xff0c;记录在HTML树中出现的同名元素的次数。 练习 5.3&#xff1a; 编写函数输出所有text结点的内容。注意不…

Centos下安装mysql 总结

一、MySQL安装 Centos下安装mysql 请点开:http://www.centoscn.com/CentosServer/sql/2013/0817/1285.html 二、MySQL的几个重要目录 MySQL安装完成后不象SQL Server默认安装在一个目录&#xff0c;它的数据库文件、配置文件和命令文件分别在不同的目录&#xff0c;了解这些目录…

Linux下的Memcache安装(含libevent的安装)

Linux下Memcache服务器端的安装服务器端主要是安装memcache服务器端&#xff0c;目前的最新版本是 memcached-1.3.0 。下载&#xff1a;http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz另外&#xff0c;Memcache用到了libevent这个库用于Socket的处理&#xff0c;…

谷歌发布 RLDS,在强化学习生成、共享和使用数据集

编译 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 大多数强化学习和序列决策算法都需要智能体与环境的大量交互生成训练数据&#xff0c;以获得最佳性能。这种方法效率很低&#xff0c;尤其是在很难做到这种交互的情况下&#xff0c;比如用真实的机器人…

浅谈 javascript 中的this绑定问题

javascript语言是在运行时前即进行编译的&#xff0c;而this的绑定也是在运行时进行绑定的。也就是说,this实际上是在函数被调用时候发生绑定的&#xff0c;它指向什么完全取决于函数在哪里被调用。1.默认绑定 例如直接在全局作用域下声明: var a2; console.log(this.a);在全局…

Centos用yum安装X Winodw

安装Centos 5.6系统的时候我没有先装任何组件&#xff0c;现在用X Window&#xff0c;需要再安装X Window&#xff0c;就可以启动图形界面了&#xff0c;但是默认的图形界面是很简陋的界面&#xff0c;可以根据需要再安装GNOME或KDE桌面环境安装X图形界面#可查询哪些组件是否已…

玩具javascript:cookie管理

2019独角兽企业重金招聘Python工程师标准>>> ;(function(window, undefined){var CookieUtil window.CookieUtil window.CookieUtil || {};var doc window.document;// 读取名称为name的Cookie信息CookieUtil.read function(name){// 暂无Cookieif(doc.cookie.l…

详解 Pandas 与 Lambda 结合进行高效数据分析

作者 | 俊欣来源 | 关于数据分析与可视化这篇文章小编来讲讲lambda方法以及它在pandas模块当中的运用&#xff0c;熟练掌握可以极大地提高数据分析与挖掘的效率导入模块与读取数据我们第一步需要导入模块以及数据集import pandas as pddf pd.read_csv("IMDB-Movie-Data.c…

前端工程师成长之多读好书

1 引言 乱七八糟的书看了很多&#xff0c;有一本讲JavaScript的印象特别深开篇说的是"JavaScript是Java的脚本语言"&#xff0c;但还是看完了&#xff0c;最后忘了书名。 下面列的这些都是看过后至少记得起书名的&#xff0c;也有部分是经常看的书&#xff0c;一起列…

linux下配置vnc的方法

网上这样的文章很多了&#xff0c;好多前辈们都把自己的经验配置共享出来&#xff0c;受益匪浅&#xff0c;现在整理一下。 下面摘录的两篇文章各有侧重&#xff0c;结合起来可以配置的比较完善了。总结一下&#xff0c;只需要四步&#xff1a;step1 在当前linux系统用户us…

用 Python 画圣诞树的 N 种玩法

作者 | 写代码的明哥来源 | Pyhton编程时光马上就是圣诞节了&#xff0c;先提前祝大家圣诞快乐&#xff01;今天来给大家分享一波如何使用 Python 来画一颗圣诞节树&#xff0c;包含多种版本&#xff0c;从平民版到豪华版&#xff0c;像极了一个程度员从入门到高级秃头程序员的…

ORM武器:NHibernate(三)五个步骤+简单对象CRUD+HQL

前面的两篇文章中。我们对NHibernate已经做了大致了解 《ORM利器&#xff1a;NHibernate&#xff08;一&#xff09;简单介绍》Nhibernate的作用&#xff1a;攻克了对象和数据库的转化问题 《ORM利器&#xff1a;NHibernate&#xff08;二&#xff09;使用CodeSmith高速生成映射…

Linux学习笔记8——bash基本概念

一个操作系统的组成中&#xff0c;shell是与用户最接近的部分shell&#xff1a;外壳&#xff0c;也是一种程序GUI&#xff1a;Gnome&#xff0c;KDE,XfaceCLI&#xff1a;sh&#xff0c;csh&#xff0c;ksh&#xff0c;bash&#xff0c;tcsh&#xff0c;zshLinux中大多使用bash…

UIScrollView offset in UINavigationController

转&#xff1a;UIScrollView offset in UINavigationController 通过设置viewCtronller的 self.automaticallyAdjustsScrollViewInsets NO; 禁用苹果scrollview提供的自适应功能。 延伸阅读&#xff1a;https://developer.apple.com/library/ios/documentation/UserExperience…

AI 通过眼睛的反光度,来识别是否 Deepfake 换脸

编译 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; Deepfake 是一种 AI换脸工具&#xff0c;现被滥用&#xff0c;从虚假宣传活动到插入一些违法内容&#xff0c;并且篡改后的图像是难以被检测到的。 一种新的 AI 工具提供了一项令人惊讶的简单方法来发现…

[异常笔记] spring boot 启动-2018040201

异常 1、编码引发异常 00:59:49.311 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Included patterns for restart : [] 00:59:49.318 [main] DEBUG org.springframework.boot.devtools.settings.DevToolsSettings - Excluded patterns for re…

maven基础概念学习1

2019独角兽企业重金招聘Python工程师标准>>> 1.maven是什么&#xff1f; 百度百科&#xff1a; Maven是基于项目对象模型(POM)&#xff0c;可以通过一小段描述信息来管理项目的构建&#xff0c;报告和文档的软件项目管理工具。 2.maven的作用&#xff1f; 构建、文档…

php session 二位数组

最普通的用法&#xff1a;一个变量名 $_SESSION[user] 0;echo $_SESSION[user]; 使用数组&#xff1a; $_SESSION[user][a] 1;$_SESSION[user][b] 2;echo $_SESSION[user][a];echo $_SESSION[user][b]; 这样的好处是可以分组可以 $_SESSION[admin][a] 11;$_SESSION[admin][…

「屋漏偏逢连夜雨」,Log4j 漏洞还没忙完,新的又来了

整理 | 郑丽媛、禾木木 出品 | CSDN 这几天&#xff0c;Apache Log4j 2 绝对是众多 Java 程序员提到的高频词之一&#xff1a;由于 Apache Log4j 2 引发的严重安全漏洞&#xff0c;令一大批安全人员深夜修 Bug、打补丁。此次漏洞更是因为其触发简单、攻击难度低、影响人群广泛等…

利用gevent实现异步执行任务

import gevent def task(pid):gevent.sleep(2)print ("task %s done"%pid)def asynchronous():threads [gevent.spawn(task,i) for i in xrange(5)]gevent.joinall(threads)if __name__ __main__:print ("asynchronous")asynchronous()执行结果&#xff…

清理SQL多余登录信息

服务器列表、登陆帐户、密码等信息都记录在 %AppData%\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin &#xff08;2008&#xff09;%AppData%\Microsoft\Microsoft SQL Server\90\Tools\Shell\mru.dat&#xff08;2005&#xff09;直接删除后重新启动 SSMS …

AI 真的能够理解人类语言吗?

作者 | Melanie Mitchell 译者 | 弯月 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 2011年&#xff0c;IBM 的人工智能系统沃森参加综艺节目《危险边缘》&#xff0c;并获得了冠军&#xff0c;当时他们宣称&#xff1a;“沃森能够理解自然语言的所有歧义和复杂…

【贪心】Google Code Jam Round 1A 2018 Waffle Choppers

题意&#xff1a;给你一个矩阵&#xff0c;有些点是黑的&#xff0c;让你横切h刀&#xff0c;纵切v刀&#xff0c;问你是否能让切出的所有子矩阵的黑点数量相等。 设黑点总数为sum&#xff0c;sum必须能整除(h1)&#xff0c;进而sum/(h1)必须能整除(v1)。 先考虑横行&#xff0…